select * from T1 where RTRIM(col1) = 'aa '
如何用Like来实现同样的 查询呢
select * from T1 where col1 LIKE 'aa[ %]'
没有空格的aa就抽不出来了,愁死哦~~~
------解决方案--------------------
LIKE '%aa%'呢?
------解决方案--------------------
select * from T1 where col1 LIKE 'aa[ %]'
调整为
select * from T1 where col1 LIKE 'aa%'即可
或者使用SUBSTRING
/*
select * from T1 where RTRIM(col1) = 'aa '
如何用Like来实现同样的 查询呢
select * from T1 where col1 LIKE 'aa[ %]'
没有空格的aa就抽不出来了,愁死哦~~~
*/
--环境
IF EXISTS(SELECT 1 FROM sys.objects WHERE type='U' AND name='T1')
DROP TABLE dbo.T1
GO
CREATE TABLE dbo.T1(col1 NVARCHAR(100))
GO
INSERT INTO dbo.T1(col1)
SELECT 'aa '
INSERT INTO dbo.T1(col1)
SELECT 'aa bb'
INSERT INTO dbo.T1(col1)
SELECT 'aabb'
GO
--
SELECT * FROM dbo.T1 WHERE col1 LIKE 'aa%'
/*
col1
----------------------------------------------------------------------------------------------------
aa bb
aabb
aa
(3 行受影响)
*/
SELECT * FROM dbo.T1 WHERE RTRIM(col1)='aa'
/*
col1
----------------------------------------------------------------------------------------------------
aa
(1 行受影响)
*/
SELECT * FROM dbo.T1 WHERE SUBSTRING(col1,1,2) = 'aa'
/*
col1
----------------------------------------------------------------------------------------------------
aa bb
aabb
aa
(3 行受影响)
*/
------解决方案--------------------
RTRIM(col1) = 'aa '
这里‘aa ’的空格不起作用的;
另外,你这个需求是以col为aa结尾条件进行筛选,要么用reverse把字符串反向后再like ‘aa%‘,要么就直接用rtrim做筛选
这种需求,不对原字段做加工,没办法走索引;