2010-08-31 40 views
1

我有以下字符串...對MySQL的預備逗號分隔的字符串凡在

1,2,3,4,5,6

我想有這個喜歡

「1 」, '2', '3', '4', '5', '6'

在MySQL中的使用WHERE IN()

會有人知道做到這一點的最好方法是什麼?

謝謝!

+1

沒有必要將值封裝在單引號中。 MySQL會根據列數據類型將INTegers隱式轉換爲VARCHAR,反之亦然。如果數據類型爲INT,那麼不應該用單引號包裝... – 2010-08-31 05:00:27

+0

但是這個說法也可以用其他方式運行,比如「如果您通過腳本,您不必對腳本中的類型做出假設參數作爲字符串; MySQL將隱式轉換類型適用「 – VolkerK 2010-08-31 05:41:39

回答

5

使用explodeimplode

$str = "1,2,3,4,5,6"; 
echo "'" . implode("','", explode(',', $str)) . "'"; 

//output: '1','2','3','4','5','6' 
+0

如果您不使用參數化查詢:如果您將項目作爲字符串文字傳遞,則應該像這樣對待它們。你要麼知道輸入字符串只包含數字,在這種情況下,OMG Ponies的批評就適用,或者你不知道字符串包含什麼,你必須用適當的轉義函數處理每個單個項目。 – VolkerK 2010-08-31 05:45:35

+0

@VolkerK,我同意。在這裏,我剛剛提供了嚴格的解決方案,將問題的其他'MySQL'實現留給用戶。 – shamittomar 2010-08-31 05:59:30

0

您可以用引號explode你的字符串到一個數組,然後join(或implode,它的別名!)它:

$str = '1,2,3,4,5,6'; 
$arr = explode(",", $str); // turns your string into array(1, 2, 3, 4, 5, 6); 
$joined_arr = join("', '", $arr); // becomes 1', '2', '3', '4', '5', '6 
$query = "... WHERE ... IN ('$joined_arr')"; // note the two missing quotes have been added in 
0
WHERE (SUBSTRING(SUBSTRING_INDEX(cocodes,cash_out_code,-1),1,1)=','OR... 

其實際上是字符串函數的組合..只是試着在那個方向