0

テーブルの2列をLIKE演算子で検索したい。列名は次のとおりです: person_first_name, person_last_name . そして、1列のように2列を検索する方法を見つけました。方法は、列がCONCATであり、連結された文字列で検索する必要がありますが、私の値は中国語です。中国語の連語で検索したい。以前、この方法で「 COLLATE UTF8_GENERAL_CI 」で中国語を検索しましたが、連結文字列では機能しません。多くの方法を試しましたが、真の結果は得られませんでした。

例:

SELECT * FROM (`dm_account` a) WHERE CONCAT(a.person_first_name, ' ', a.person_last_name) COLLATE UTF8_GENERAL_CI LIKE '%ANY CHINESE CHARACTER%' ORDER BY `a`.`createdate` asc;

しかし、このクエリはレコードを返しません。

SELECT CONCAT(a.person_first_name, ' ', a.person_last_name) FROM dm_account WHERE id=2184;

このクエリでは、結合された単語は表示されません。しかし、このユーザーには名前と姓があります。

誰でも私を助けることができますか?ありがとう。

4

2 に答える 2

1

列の文字セットがutf8で照合がutf8_general_ciaの場合、定義されていないテーブル エイリアスはさらにCOLLATE UTF8_GENERAL_CIを必要としません。

この例を確認できます

CREATE TABLE `person` (
  `id` int(11) NOT NULL,
  `first_name` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
  `last_name` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

人の記録

INSERT INTO `person` VALUES ('1', '昌, 畅, 长 ', '富, 芙');

クエリ

SELECT  * FROM person WHERE CONCAT(first_name, ' ', last_name) LIKE "%昌, 畅, 长  富, 芙%"

結果

1   昌, 畅, 长     富, 芙
于 2015-09-01T15:37:54.980 に答える
0
SELECT CONCAT(person_first_name, ' ', person_last_name) 
FROM dm_account 
WHERE id=2184

テーブルエイリアスを使用aしましたが、定義していません

于 2015-09-01T15:32:28.590 に答える