mysqlクエリで次のことを行う適切な方法は何ですか?:
$string="apple banana orange";
mysql列A = "banana"
mysqlクエリ:列A
は含まれていません$string
ありがとう!
mysqlクエリで次のことを行う適切な方法は何ですか?:
$string="apple banana orange";
mysql列A = "banana"
mysqlクエリ:列A
は含まれていません$string
ありがとう!
各行に、A
スペースで区切られたトークンを持つという列がある場合は、次のように実行できます。
SELECT * FROM table_name
WHERE LOCATE(CONCAT(' ',A,' '),'apple banana orange') = 0;
両側に空白を埋めた理由は、次のような状況をカバーするためです。
SELECT * FROM table_name
WHERE LOCATE(CONCAT(' ',A,' '),'pineapple banana orange') = 0;
文字列として
apple
にありますapple banana orange
apple
にありますpineapple banana orange
セマンティクスの観点から
apple
にありますapple banana orange
apple
にありませんpineapple banana orange
あなたが探していたらどうしますgrape
か?
文字列として
grape
にありますapple banana orange grape
grape
にありますapple banana orange grapefruit
セマンティクスの観点から
grape
にありますapple banana orange grape
grape
にありませんapple banana orange grapefruit
試してみる !!!
クエリ自体は、全表スキャンを生成します。
FULLTEXTインデックスの作成を検討する必要があります。
SELECT * FROM table_name
WHERE A NOT IN ('apple', 'banana', 'orange');
多分このようなもの?(私はそれをテストしていませんが、うまくいくと思います)
<?php
$string = "apple banana orange";
//Make an array of each fruit in string (with delimiter space)
$items = explode(" " , $string);
//None of the fruits in $string would be listed in resultset
$query = "SELECT * FROM fruits WHERE columnA NOT IN ($items)";
//db-handling...
?>
更新:配列を作成しないでください.....代わりにこれを実行してください...!$ items = str_replace( ""、 "、"、$ string);