сравнение varchar в SQL Server

Я ищу некоторую функцию сравнения SQL varchar, такую ​​​​как C # string.compare (сейчас мы можем игнорировать регистр, должен возвращать ноль, когда символьное выражение одинаково, и ненулевое выражение, когда они разные)

В основном у меня есть буквенно-цифровой столбец в одной таблице, который необходимо проверить в другой таблице.

Я не могу выбрать A.col1 - B.col1 из (запроса), так как оператор "-" не может применяться к символьным выражениям

Я не могу преобразовать свое выражение в целое (а затем выполнить разность/вычитание), так как оно терпит неудачу

select cast ('ASXT000R' as int)
Conversion failed when converting varchar 'ASXT000R'  to int 

Soundex не стал бы этого делать, так как soundex одинаков для двух одинаковых строк.

Difference не сделал бы этого, поскольку select difference('abc','ABC') = 4 (согласно msdn, разница — это разница в звуковом выражении двухсимвольных выражений, а разница =4 подразумевает наименьшее различие)

Я могу написать curson для сравнения ascii для каждого буквенно-цифрового символа в каждой строке, но мне было интересно, есть ли другой способ сделать это?


person ram    schedule 22.05.2010    source источник


Ответы (1)


мы можем игнорировать регистр на данный момент, должны возвращать ноль, когда символьное выражение совпадает, и ненулевое выражение, когда они разные

Если это все, что вам нужно, вы можете просто использовать это:

CASE WHEN 'a' = 'b' THEN 0 ELSE 1 END

Обратите внимание, что это выражение возвращает 1, когда любой из аргументов имеет значение NULL. Это, вероятно, не то, что вы хотите. Вы можете использовать следующее, чтобы вернуть NULL, если любой из аргументов равен NULL:

CASE WHEN 'a' = 'b' THEN 0
     WHEN 'a' <> 'b' THEN 1
END

Если вам нужны отрицательные и положительные значения в зависимости от того, что сравнивает «больше», вы можете использовать это вместо этого:

CASE WHEN 'a' < 'b' THEN -1 
     WHEN 'a' = 'b' THEN 0
     WHEN 'a' > 'b' THEN 1
END
person Mark Byers    schedule 22.05.2010
comment
Как насчет сравнения varchar? - person Illia Ratkevych; 13.06.2013