簡體   English   中英

從mysql數據庫中選擇,其中列包含PHP

[英]Select from mysql database where columns contains PHP

我有一個數據庫,有些列包含CA,GB等內容,盡管有些包含多個國家/地區代碼,例如

美國+ GB + CA + AU

我只是想知道,當我只搜索CA或GB,而不必搜索整個包US + GB + CA + AU時,我將執行哪種查詢將返回該行。

情況有點混亂,基本上我只需要基於對CA或GB等的搜索就返回該行。

謝謝

使用FIND_IN_SET()但是您首先需要將+替換為,因為它需要逗號分隔的字符串。 即使沒有REPLACE() ,也不會使用countrycodes列上的任何索引。

SELECT * FROM tbl 
WHERE FIND_IN_SET('AU', REPLACE(countrycodes, '+', ',')) > 0

但是,正確的長期解決方案是更改數據庫結構,以將這些國家/地區代碼規范化為僅包含兩列的表-國家/地區代碼以及您現在嘗試查詢的表中關聯行的ID。 然后,您可以適當索引該列以提高性能(可能會大大改善它)。

我建議將其歸一化,就像liquorvicar所說的那樣。

但使用SELECT ... WHERE countrycode LIKE '%GB%'會工作。 http://w3schools.com/sql/sql_like.asp

這不是一個好的解決方案,但是您可以對查詢使用LIKE

SELECT * FROM `table` WHERE `field` LIKE '%+CA+%' OR `field` LIKE 'CA+%' OR `field` LIKE '%+CA' OR `field` = 'CA'

最后兩個檢查fir和最后一個值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM