DECLARE @Test VARCHAR(500)--SET @Test = 'SELECT * [tb_User] WHERE [Name] LIKE '%\李%' ESCAPE '\'' -- 执行失败
--SET @Test = 'SELECT * [tb_User] WHERE [Name] LIKE '%李%' ' -- 执行失败
SET @Test = N'SELECT * [tb_User] WHERE [Name] LIKE ''%李%'' ' -- 执行失败
--SET @Test = 'SELECT * [tb_User] WHERE [Name] LIKE '%[李]%' ' -- 执行失败EXEC @Test
三条语句全部执行失败,啥原因呀。
PS:由于某些原因必须得用动态组成sql语句,我知道直接写SELECT * FROM TABLE WHERE LIKE '%李%' 肯定没错。谢谢呀。
DECLARE @Test VARCHAR(500)SET @Test = N'SELECT * FROM [tb_User] WHERE [Name] LIKE ''%李%'' ' -- 执行失败
EXEC @Test
你的FROM 少了
EXEC @Test
EXEC( N'SELECT * FROM NUM WHERE ID LIKE ''%1%''')
(
[Name] varchar(20)
)
insert into #TT select '李1'
insert into #TT select '11李1'
insert into #TT select '李'
insert into #TT select 'wang'
insert into #TT select '张'declare @sql varchar(100)
set @sql=('select * from #TT where [name] like ''%李%''')
exec(@sql)Name
--------------------
李1
11李1
李(3 行受影响)
charindex()
create table #TT
(
[Name] varchar(20)
)
insert into #TT select '李1'
insert into #TT select '11李1'
insert into #TT select '李'
insert into #TT select 'wang'
insert into #TT select '张'
--1
declare @sql varchar(100)
set @sql=('select * from #TT where [name] like ''%李%''')
exec(@sql)
--2
select * from #TT where charindex(N'李',[Name])>0
Name
--------------------
李1
11李1
李(3 行受影响)
第二,exec后面要括号即exec(@test)
2.EXEC后的@Test要用()括起来
DECLARE @Test VARCHAR(500)
DECLARE @condition nvarchar(100)SET @condition = '%李%'--SET @Test = 'SELECT * [tb_User] WHERE [Name] LIKE '%\李%' ESCAPE '\'' -- 执行失败
--SET @Test = 'SELECT * [tb_User] WHERE [Name] LIKE '%李%' ' -- 执行失败
SET @Test = N'SELECT * FROM [First] WHERE [userName] LIKE ''%李%''' -- 执行失败
--SET @Test = 'SELECT * [tb_User] WHERE [Name] LIKE '%[李]%' ' -- 执行失败EXEC (@Test)
SET @Test = N'SELECT * [tb_User] WHERE [Name] LIKE N''%李%'' '
SET @Test = 'SELECT * FROM [tb_User] WHERE [Name] LIKE N''%李%'' '