2013-12-16 12 views
2

Я имел условие написано какКак работает сравнение строк SQL?

IF(LEN(@strData) > 3 OR @strData > '255') BEGIN  
// Some Condition 
END 

Это написано в зр, которые я встречаю написанного кем-то. Первое условие ясное, если LEN> 3, это будет верно для этого условия.

Но > '255' Что это значит?

Я прошел случайные значения, как

@strData = 'add' Result true 
@strData = 'a' Result true 
@strData = '12hhd' Result false 

Я не понял, каким образом он ведет себя. Этот запрос не комментируется, почему его разработчик пишет эту строку.

В SQL String Сравнение того, как это будет работать. Пожалуйста, помогите мне понять.

UPDATE:

мне нужно, что то же самое состояние, в C# для некоторой цели

ответ

3

В SQL Server сравнение строк производится в алфавитном порядке. Это «аллан» больше, чем «алан», потому что в алфавитном порядке «алан» предшествует «аллан». Таким образом, числа обрабатываются одинаково при сравнении строк, они обрабатываются в алфавитном порядке ... так что «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"); 

Надеется, что это имеет смысл для вас

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; 

В случае вашей " 'а'> '255'" ASCII/UTF-8 буква 'а' больше, чем характер " 2 ', поэтому он возвращает true при сравнении первого символа,

Смежные вопросы