我有一个像
这样的条件IF(LEN(@strData) > 3 OR @strData > '255') BEGIN
// Some Condition
END
这是用sp写的,我遇到过某人写的。 如果LEN> 1,则第一条件是明确的。 3这种情况会成真。
但> '255'
是什么意思?
我传递了随机值,如
@strData = 'add' Result true
@strData = 'a' Result true
@strData = '12hhd' Result false
我不明白它的行为方式。 这个查询没有被评论为什么其他开发人员写了那行。
在SQL字符串比较中它将如何工作.. 请有人说清楚。
更新:
出于某种目的,我在C#中需要相同的条件
答案 0 :(得分:3)
在SQL Server中,字符串比较按字母顺序完成。那就是“allan”大于“alan”,因为字母“alan”出现在“allan”之前。因此,在进行字符串比较时,数字被视为相同,它们按字母顺序排列......因此,'2'大于'12'...令人惊讶,是吗?那么,从左到右进行字母串比较,因此'2'大于'12'。 现在,在C#中,它的行为与sql完全没有区别。为了加强你可能有的任何疑虑......你可以轻松地测试它......
SQL
if '2' > '12'
select '2 > 12';
else
select '2 < 12';
C#Console App
if ("2".CompareTo("12") < 0 )
Console.WriteLine("2 is less than 12");
else if ("2".CompareTo("12") > 0)
Console.WriteLine("2 is greater than 12");
else
Console.WriteLine("2 is equal to 12");
希望你有意义
答案 1 :(得分:0)
它是两个字符串之间的简单联合。
SQL字符串比较的工作原理如下:
Compare 'a' with '255' for '>'
if length(a) < length(b)
pad a with spaces to be same length as b;
for x = 0 to length(a)
if a(x) < b(x) return false;
if a(x) > b(x) return true;
return false;
如果您的“'a'&gt;'255'” ASCII / utf-8字母'a'大于字符'2',因此它在第一个字符比较时返回true,