使用LIKE'%b-%'SELECT查询在MS SQL Server 2012上返回0行
在我的sql查询中,我使用'%b-%'
执行代码,查询返回0行。使用LIKE'%b-%'SELECT查询在MS SQL Server 2012上返回0行
这里是我的查询:
SELECT NAME, SURNAME, AGE FROM PERSONS WHERE NAME LIKE '%b-%'
和不喜欢:
SELECT NAME, SURNAME, AGE FROM PERSONS WHERE NAME = 'b-rush'
所有查询返回0行。
我有一个像'b-rush'
,'b-rush1'
,'b-rush2'
等
更改当前选定的数据库值。
Correct Database Wrong database
这是后话,如果表的创建是凌乱的,可以发生。
假设你运行SQL Management Studio中的新查询:
CREATE TABLE test (temp nvarchar(7))
你有你在我的截图看到下拉菜单中选择法师。你已经创建一个测试表,但在主。通常,您不需要这样做,因此您可以在特定的数据库上创建它,而不是通过在查询中指定它或修改选定的下拉选项。
CREATE TABLE MyDatabase.dbo.test (temp nvarchar(7))
您现在已经在BOTH Master和MyDatabase上创建了表格。如果您运行了选择查询,它不指定数据库名称,它将使用该下拉列表中选定的任何内容。这可能是Master,这与你的数据不一样。
正如@abatishchev提到的,该表可以有整理的差异,当核对
- CI =不区分大小写的,你的查询将工作正常
-
CS =区分大小写的,你需要在查询
DECLARE @PERSONS table (NAME_CASE_Insensitive varchar(30) COLLATE Latin1_General_CI_AS_KS_WS NOT NULL ,NAME_CASE_sensitive varchar(30) COLLATE Latin1_General_CS_AS_KS_WS NOT NULL ) insert @PERSONS (NAME_CASE_Insensitive , NAME_CASE_sensitive) values ('B-rush','B-rush'),('b-rush1','B-rush1'),('b-rush2','B-rush2')
不区分大小写使用正确的情况下 - 返回所有
SELECT * FROM @PERSONS WHERE NAME_CASE_Insensitive = 'b-rush'
NAME_CASE_Insensitive NAME_CASE_sensitive
------------------------------ ------------------------------
B-rush B-rush
区分大小写 - 返回什么
SELECT * FROM @PERSONS WHERE NAME_CASE_sensitive = 'b-rush'
NAME_CASE_Insensitive NAME_CASE_sensitive
------------------------------ ------------------------------
不区分大小写 - 返回所有
SELECT* FROM @PERSONS WHERE NAME_CASE_Insensitive LIKE '%b-%'
NAME_CASE_Insensitive NAME_CASE_sensitive
------------------------------ ------------------------------
B-rush B-rush
b-rush1 B-rush1
b-rush2 B-rush2
区分大小写 - 返回什么
SELECT* FROM @PERSONS WHERE NAME_CASE_sensitive LIKE '%b-%'
NAME_CASE_Insensitive NAME_CASE_sensitive
------------------------------ ------------------------------
区分大小写 - 返回所有
SELECT* FROM @PERSONS WHERE NAME_CASE_sensitive LIKE '%B-%'
NAME_CASE_Insensitive NAME_CASE_sensitive
------------------------------ ------------------------------
B-rush B-rush
b-rush1 B-rush1
b-rush2 B-rush2
正确喜欢区分大小写
SELECT* FROM @PERSONS WHERE NAME_CASE_sensitive LIKE '%[bB]-%'
NAME_CASE_Insensitive NAME_CASE_sensitive
------------------------------ ------------------------------
B-rush B-rush
b-rush1 B-rush1
b-rush2 B-rush2
正如我所说的,我的表是不区分大小写的。 – Xaithe
显示一些样本数据 – WillardSolutions
什么是DB你”的整理重新查询?是否偶然区分大小写(不寻常但会发生)。 – abatishchev
愚蠢的问题,但因为你使用MS SQL Server,你确定你选择了正确的数据库吗? – DHLopez