在SQL Server中比较两个字符串

17

在 SQL Server 2008 存储过程中,有没有像下面这样比较两个字符串的方法?

int returnval = STRCMP(str1, str2)
  • 如果字符串相同,则返回0
  • 如果第一个参数按当前排序顺序较小,则返回-1。
  • 否则返回1。

我在MySQL中找到了上述方法,但在SQL Server中没有。

1个回答

43
在SQL Server中没有内置的字符串比较函数,您必须手动完成它:
CASE
    WHEN str1 = str2 THEN 0
    WHEN str1 < str2 THEN -1
    WHEN str1 > str2 THEN 1
    ELSE NULL -- one of the strings is NULL so won't compare
END

注意:

  • 您可以使用 CREATE FUNCTION 等方式将此包装为 UDF。
  • 如果要比较的字符串中有一个为 NULL,您可能需要处理 NULL。
  • str1str2 将是列名或 @ 变量。

您可以使用SQL Server中的CASE语句或用户定义函数来比较字符串。您可以查看SOUNDEX和DIFFERENCE字符串函数以获取有关字符串可比性的更多信息。 - Yogesh Bhadauirya
1
@Yogesh Bhadauirya:澄清一下,SOUNDEX和DIFFERENCE不是按字母顺序进行比较的。 - gbn
你是对的 @gbn,但如果 OP 知道一些关于字符串比较函数的知识,这将非常有用,因为它可以帮助找到两个字符串的相似性。 - Yogesh Bhadauirya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接