1

こんにちはみんな123.456.789のようなデータベースでデータを検索する必要があります123456789と入力しただけでも、どうすれば検索できますか?データベースから特殊文字をエスケープして、123456789を検索しても、123.456.789のような値を表示できるようにする必要があります。

これが私の質問です:

SELECT *
FROM clients 
WHERE REPLACE(phone, '.', '') LIKE ".$searchtext."

...searchtext私が探している番号はどこですか。特殊文字が存在するかどうかに関係なく、一致するすべての値を返す必要があります。

4

4 に答える 4

2

@キール

これがサンプルのテーブルとクエリです。これが役立つかどうかを確認してください。テーブル構造がよくわからない。

 CREATE TABLE `clients` (
 `id` int(11) NOT NULL,
 `phone` varchar(255) NOT NULL
 ) ENGINE=InnoDB;

INSERT INTO `test`.`clients` (
`id` ,
`phone`
)
VALUES (
 '1', '123.456.789'
), (
'2', '123.456.785'
);



mysql> select * from clients where replace(phone,'.','') = '123456789'; 
+----+-------------+
| id | phone       |
+----+-------------+
|  1 | 123.456.789 |
+----+-------------+

この助けを願っています!

于 2012-10-17T11:28:12.603 に答える
2
select phone from table_name 
 where  replace (cast (phone as text) , '.','')  like '%123456789%'
于 2012-10-17T10:49:23.683 に答える
1

MySQL の関数を使用できます。REPLACE()

SELECT * FROM my_table WHERE REPLACE(my_column, '.', '') = '123456789';

しかし、my_column整数のみを含む場合は、MySQL の整数型の 1 つに変更する必要があります。

于 2012-10-17T10:40:39.777 に答える
0

Replace()これを行うのに最適な関数は次のとおりです。

Select * from TableName where Replace(ColumnName,'escaping character','replaced character')='your Search option'

あなたの場合、エスケープ文字はdot(.)、置換文字は''、検索オプションは'123456789'

于 2012-10-17T11:20:29.897 に答える