1

mysqlクエリで次のことを行う適切な方法は何ですか?:

$string="apple banana orange";

mysql列A = "banana"

mysqlクエリ:列Aは含まれていません$string

ありがとう!

4

3 に答える 3

2

各行に、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インデックスの作成を検討する必要があります。

于 2013-03-21T20:55:18.800 に答える
0
SELECT * FROM table_name 
WHERE A NOT IN ('apple', 'banana', 'orange');
于 2013-03-21T20:34:19.527 に答える
0

多分このようなもの?(私はそれをテストしていませんが、うまくいくと思います)

<?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);

于 2013-03-21T20:47:10.777 に答える