回答

收藏

比较SQL Server中的两个字符串

技术问答 技术问答 195 人阅读 | 0 人回复 | 2023-09-14

有什么方法可以像下面这样在SQL Server 2008存储过程中比较两个字符串?
  z! q& q, D" r! C7 D# O0 E; aint returnval = STRCMP(str1, str2)
7 v- @) s  Q) n. S; J( I$ v* ]如果字符串相同,则返回0
) J! F) O, |9 u) {( O如果根据当前的排序顺序,第一个参数小于第二个参数,则返回-1。
% ?- f* C4 D5 j8 i* N( p+ i! H否则返回1。; U: \( V6 L/ y8 L
, S' @5 o$ `! B6 o$ @" s# S
以上方法我在MySQL中找到,但在SQL Server中找不到。
+ K5 w+ Z0 s' W. l( \                4 [8 ?3 s  n! c# W, s
解决方案:
+ F+ p9 \& f; Q- K" P+ g; g" v               
8 m' W$ `6 E" S/ l& y- u. d6 f" e8 g- K. {, o/ {

; R6 Z9 F( K# Q* s                SQL Server中没有直接的字符串比较功能4 _7 t# n, ]' k* Q0 q; m
CASE! o0 j4 P* x+ Y* h: S7 w
  WHEN str1 = str2 THEN 03 z: L2 E8 A  U3 p! X0 e
  WHEN str1  str2 THEN 17 l  d# V6 M+ o0 ]0 F4 Y- _9 A
  ELSE NULL --one of the strings is NULL so won't compare (added on edit)
* G5 v4 q1 U) `) _2 [- R6 F* eEND
5 R+ f) P# t! Y$ M% f笔记
* v, \( f9 m+ D) f* I您可以使用CREATE FUNCTION等通过UDF进行包装
) N6 |. n, o+ H& @+ P7 V您可能需要NULL处理(在上面的代码中,任何NULL都将报告1)4 b6 `2 w; A8 d1 h* ~: o
str1和str2将是列名或@variables
: l' @: `& O4 x7 W
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则