使用两个变量时Charindex不工作

时间:2014-09-04 21:35:30

标签: sql sql-server tsql sql-server-2008-r2

我在SQL Server 2008 R2中使用两个游标来处理从Select语句返回的两个值列表。我将列表tofind1中的第一个值读入变量find1,将列表tosearch1中的值读入变量search1。

表中的基础变量类型分别为长度为10和255的nvarchar。变量定义为相同的长度nvarchar

我正在用两个类似的字符串测试它:

  • find1 ='bill'
  • search1 ='bill,fred,mary'

  • 当我尝试charindex(find1, search1)时,它返回0.这是不正确的。

  • 当我尝试charindex('bill',search1)时,它会返回1.这是正确的。

当我运行以下代码时,两对语句都可以正常工作:

DECLARE @search1 nvarchar(255);
DECLARE @find1 nvarchar(10);

set @find1 = 'bill'
set @search1 = 'bill,fred,mary'

select charindex(@find1,@search1)
select charindex('bill','bill,fred,mary')

if 'bill,fred,mary' like '%bill%'
    print 'Yay'

if @search1 like '%' + @find1 + '%'
    print 'Yes'

是否有关于在游标中选择值然后将其分配给与其数据类型混淆的变量的内容,以便CHARINDEXLIKE不起作用?我尝试使用CAST函数三次确保变量都被视为nvarchar

0 个答案:

没有答案