17

Is there any way to compare two strings in SQL Server 2008 stored procedure like below?

int returnval = STRCMP(str1, str2)
  • returns 0 if the strings are the same
  • returns -1 if the first argument is smaller than the second according to the current sort order.
  • returns 1 otherwise.

Above method I find in the MySQL but not in SQL Server.

0

2 Answers 2

43

There is no built-in string compare function in SQL Server, you have to do it manually:

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

Notes:

  • you can wrap this via a UDF using CREATE FUNCTION etc.
  • you may need NULL handling in case one of the compared strings is NULL
  • str1 and str2 will be column names or @variables
Sign up to request clarification or add additional context in comments.

3 Comments

You will use the case statement or User defined function to compare the string in sql server. You can check SOUNDEX & DIFFERENCE string function for more information regarding string comparability.
@Yogesh Bhadauirya: To clarify, SOUNDEX & DIFFERENCE don't compare alphabetically
You are right @gbn, but this is useful if OP knows something about string comparisons function which is useful to find similarity of two strings.
1

I use this:

SELECT IIF(str1 = str2, 0, -1)

1 Comment

I think you misunderstood the question. Your solution does not return 1 (one) when str1 is larger than str2 (according to the current sort order). Still, as per my understanding of how this website works, incorrect answers are still considered to be valid answers.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.