如果在字符串末尾添加空格,则Sql Where子句不起作用
我有下面的sql查询如果在字符串末尾添加空格,则Sql Where子句不起作用,sql,sql-server,Sql,Sql Server,我有下面的sql查询 Select * from usertable where username = 'xyz (space)'; 这是给我的结果,这是错误的结果只有当我没有添加空间结束,因为在数据库中没有空间 是否有任何函数或如何执行该操作。如果数据是带有尾随空格的CHAR数据,则可以像这样使用该函数 select * from usertable where RTRIM(username) = 'xyz' select * from usertable where username =
Select * from usertable where username = 'xyz (space)';
这是给我的结果,这是错误的结果只有当我没有添加空间结束,因为在数据库中没有空间
是否有任何函数或如何执行该操作。如果数据是带有尾随空格的CHAR数据,则可以像这样使用该函数
select * from usertable where RTRIM(username) = 'xyz'
select * from usertable where username = 'xyz ' AND
DATALENGTH(username) = DATALENGTH('xyz ')
编辑:为了匹配包含尾随空格的内容,可以使用函数,如下所示
select * from usertable where RTRIM(username) = 'xyz'
select * from usertable where username = 'xyz ' AND
DATALENGTH(username) = DATALENGTH('xyz ')
如果您不想要结果,如果结尾有空格,您可以使用下面的查询
select * from usertable where username not like '% '
或者这个:
select * from usertable where right(username,1) <> ' '
我希望您要过滤那些在最后位置有空格的记录
DECLARE @TestTable TABLE (Data VARCHAR(20));
INSERT INTO @TestTable (Data) VALUES ('xyz'), ('Sharma ');
SELECT * FROM @TestTable WHERE Data = 'Sharma ';
SELECT * FROM @TestTable WHERE Data = 'Sharma';
对于其中Data='Sharma'和'Sharma'将得到相同的结果
使用SUBSTRINGData,DATALENGTHData,1可以获得列的最后一个字符,并在WHERE子句中添加条件,这将解决您的问题:
DECLARE @TestingValue AS VARCHAR(20) = 'Sharma'; -- 'xyz' -- 'Sharma '
SELECT * FROM @TestTable WHERE Data = @TestingValue AND SUBSTRING(@TestingValue, DATALENGTH(@TestingValue), 1) = ' ' ;
如果将“Sharma”设置为参数值,则上述块返回结果。这是因为它规定:
SQL Server遵循ANSI/ISO SQL-92规范第8.2节,关于如何比较字符串和空格的一般规则3。ANSI标准要求对比较中使用的字符串进行填充,以便它们的长度在比较之前匹配。填充直接影响WHERE和HAVING子句谓词以及其他Transact-SQL字符串比较的语义。例如,Transact-SQL认为字符串“abc”和“abc”对于大多数比较操作是等效的
我的重点您好,这段代码适合我
select * from usertable where username = 'xyz (Space) ' AND
DATALENGTH(username) = DATALENGTH('xyz (Space) ')
您正在从phpno运行查询,它位于sql server中2008@Sharmaji使用TrimPlease给我一个示例查询,如果最后有空间,我不想要结果。可能的数据重复是varchar,rtrim将从数据库中删除空间,但我想要的是,如果最后有空间,结果将不会出现…感谢它的工作,但像这样更改查询下面:从usertable中选择*,其中username='xyz'和DATALENGTHusername=DATALENGTH'xyz'实际上,如果用户输入了空格,我不希望得到结果