考虑下表
通过以下方式创建:
CREATE TABLE WORD_TEST(WORD NVARCHAR(100));
INSERT INTO WORD_TEST(WORD) VALUES('these'),('are'),('some'),('test'),('words'),('including'),('puþpies'),('with'),('parents');
注意单词puþpies中的Thorn(þ)字符。
现在,如果我想做一些像查找所有具有此角色的行,我会尝试类似
SELECT * FROM WORD_TEST WHERE WORD LIKE '%þ%';
给出了结果
但问题是它也匹配单词中的任何'th'。 我也尝试了以下变化,产生相同的结果。
SELECT * FROM WORD_TEST WHERE WORD LIKE N'%þ%';
SELECT * FROM WORD_TEST WHERE WORD LIKE '%' + NCHAR(254) + '%';
如何仅根据包含该字符的单词进行选择?
答案 0 :(得分:1)
Felix建议更改SELECT
语句的替代方法是在创建表时设置WORD
列的排序规则,以便它不会将刺字符强制转换为某些内容else(在这种情况下显然是th
):
CREATE TABLE WORD_TEST(WORD NVARCHAR(100) COLLATE Latin1_General_100_BIN2);
现在执行SELECT
语句应该会给您预期的结果:
SELECT * FROM WORD_TEST WHERE WORD LIKE '%þ%';