替换函数在动态sql查询中不起作用

时间:2013-11-20 20:55:40

标签: sql-server sql-server-2008 visual-studio-2008

我在更换sql查询中的字符时遇到问题。我正在使用vs 2008.我正在尝试将土耳其字符替换为I.

工作正常:

Select FirstName, REPLACE(FirstName,N'İ','I') replaced 
from Employee where FirstName = N'İAİL'

用作动态语句时失败。

相同的查询无法在动态语句中替换。

DECLARE @SQL NVARCHAR(4000)
SET @SQL = 'Select FirstName, REPLACE(FirstName,N''İ'',''I'') replaced from Employee where FirstName = N'İAİL'
EXEC (@SQL)

你能让我知道为什么这会在第二种情况下失败吗?

1 个答案:

答案 0 :(得分:2)

复制并粘贴到SSMS语法高亮显示您在语句末尾缺少一些撇号:

DECLARE @SQL NVARCHAR(4000)
SET @SQL = 'Select FirstName, REPLACE(FirstName,N''İ'',''I'') replaced from Employee where FirstName = N''İAİL'''
EXEC (@SQL)

具有大量字符串的动态SQL是皇家PITA。