我将string.empty
从C#传递到SQL Server中的存储过程。
我正在使用string.empty
like
条件。
seg_cd
从C#传递为string.empty
。
LIKE '%' + @SEG_CD + '%'
但它取得了0条记录。
但是当我在存储过程中这样做时:
LIKE '%' + '' + '%'
获取正确的行数。
我尝试在C#中修剪值,然后它也无效。
在C#SEG_CD
中是一个字符串,在存储过程中,SEG_CD
为char(3)
。
感谢任何帮助。
答案 0 :(得分:6)
你的问题是SQL数据类型 - char(3)
意味着字符串总是长三个字符 - 用空格填充到定义的长度。
所以你真的要检查
LIKE '% %'
并且找不到它,它出现了。
你应该在SQL中使用VARCHAR(3)
- 那么你的字符串将只是它的真实存在!在您传入string.Empty
的情况下,它将为0个字符
答案 1 :(得分:1)
如果@ SEG_CD是一个char(3),那么它将被填充为3个字符,因此它是等于
LIKE '%' + ' ' + '%'
改为使用varchar或nvarchar。