0

「セントキャサリンズ」という名前の地域列の下のデータベースに何かがあります

ピリオドのない文字列から "St. Catharines" を含むレコードを返したいと思います。したがって、文字列は「St Catharines」になります。これはできますか?どのように?

今私は持っています:

$region = "St Catharines"; 
$query = " AND region like '" . $region . "%'";

残念ながら、うまくいきません。

ピリオドは文字列に常に存在せ$regionず、データベース レコード内のどこにでも存在する可能性があります (つまり、"St" の直後ではありません)。

4

2 に答える 2

2

私があなたを正確にフォローしているかどうかはわかりませんが、次のようなものが機能する可能性があります。

$region = "St. Catharines"; 
$query = " AND region like REPLACE($region, '.', '')" 

とにかく、MySQLの組み込み関数(文字列操作)を使用する必要があると思いますが、これを実現します。 http://dev.mysql.com/doc/refman/5.0/en/string-functions.html

于 2013-03-20T00:17:30.970 に答える
0

あなたは本当にそれをすべきではありません、それは良くありません、それは手前に修正されるべきです.

文字列をスペースで分割し (explode を使用)、たとえば 2 つの部分を検索できます
$arr = explode(" ",$string);

$query = " AND (region LIKE '".$arr[0]."%' OR '%".$arr[1]."%')";

これにより、結果として、先頭に「St」が含まれるすべてのものと、結果に「Catharines」が含まれるすべてのものが見つかります。

それがその問題に対する最良の解決策であり、部分一致です。必要な結果よりも多くの結果が表示される可能性がありますが、別の解決策は、ここで言及されているようなものです:コンマなどの削除に関するstackoverflowの質問

于 2013-03-20T00:07:53.620 に答える