将两个字符串连接起来,并将较小的字符串放在sqlserver中的第一个字符串中



用于从列A和B中连接两个varchars,如";1923X";以及";11459";有了hashtag,虽然我总是希望最小的字符串一开始就变成,但在SQL server查询中我应该怎么做?

输入:两列

A=";1923X";

B=";11459";

程序:

当我们从右到左检查两个输入时,在本例中,B(1(中的第二个字符值小于A(9(中的第一个字符,因此B较小。

结果:新列C

"11459#1923X";

原始答案:

如果您需要对输入字符串进行排序,而不仅仅是按第二个字符排序,STRING_AGG()也是一个选项:

DECLARE @a varchar(5) = '1923X'
DECLARE @b varchar(5) = '11459'
SELECT STRING_AGG(v.String, '#') WITHIN GROUP (ORDER BY v.String) AS Result
FROM (VALUES (@a), (@b)) v (String)

输出:

Result
11459#1923X

更新:

您更改了需求(现在字符串存储在两列中(,因此需要一个不同的语句:

SELECT 
A, 
B, 
C = (
SELECT STRING_AGG(v.String, '#') WITHIN GROUP (ORDER BY v.String)
FROM (VALUES (A), (B)) v (String)
)
FROM (VALUES ('1923X', '11459')) t (a, b)

最新更新