基于Thorn字符MS SQL Server选择

时间:2016-03-10 01:20:58

标签: sql sql-server select

考虑下表

Words Table

通过以下方式创建:

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 '%þ%';

给出了结果

enter image description here

但问题是它也匹配单词中的任何'th'。 我也尝试了以下变化,产生相同的结果。

SELECT * FROM WORD_TEST WHERE WORD LIKE N'%þ%';
SELECT * FROM WORD_TEST WHERE WORD LIKE '%' + NCHAR(254) + '%';

如何仅根据包含该字符的单词进行选择?

1 个答案:

答案 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 '%þ%';