我在SQL Server 2008 R2中使用两个游标来处理从Select
语句返回的两个值列表。我将列表tofind1中的第一个值读入变量find1,将列表tosearch1中的值读入变量search1。
表中的基础变量类型分别为长度为10和255的nvarchar
。变量定义为相同的长度nvarchar
。
我正在用两个类似的字符串测试它:
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'
是否有关于在游标中选择值然后将其分配给与其数据类型混淆的变量的内容,以便CHARINDEX
和LIKE
不起作用?我尝试使用CAST
函数三次确保变量都被视为nvarchar
。