![](/img/trans.png)
[英]PHP/MYSQL: SELECT statement, multiple WHERE's, populated from database
[英]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.