SQL Server存储过程无法识别string.empty

时间:2014-09-13 11:52:14

标签: c# sql sql-server

我将string.empty从C#传递到SQL Server中的存储过程。

我正在使用string.empty like条件。

seg_cd从C#传递为string.empty

LIKE '%' + @SEG_CD + '%'

但它取得了0条记录。

但是当我在存储过程中这样做时:

LIKE '%' + '' + '%'

获取正确的行数。

我尝试在C#中修剪值,然后它也无效。

在C#SEG_CD中是一个字符串,在存储过程中,SEG_CDchar(3)

感谢任何帮助。

2 个答案:

答案 0 :(得分:6)

你的问题是SQL数据类型 - char(3)意味着字符串总是长三个字符 - 用空格填充到定义的长度。

所以你真的要检查

LIKE '%   %'

并且找不到它,它出现了。

你应该在SQL中使用VARCHAR(3) - 那么你的字符串将只是它的真实存在!在您传入string.Empty的情况下,它将为0个字符

答案 1 :(得分:1)

如果@ SEG_CD是一个char(3),那么它将被填充为3个字符,因此它是等于

LIKE '%' + ' ' + '%'

改为使用varchar或nvarchar。