当前位置: 代码迷 >> Sql Server >> SqlServer中的RTRIM怎么用Like来实现呢
  详细解决方案

SqlServer中的RTRIM怎么用Like来实现呢

热度:20   发布时间:2016-04-24 10:08:01.0
SqlServer中的RTRIM如何用Like来实现呢?
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做筛选

这种需求,不对原字段做加工,没办法走索引;
  相关解决方案