连接两个字符串并首先将较小的字符串放入sql server

问题描述 投票:0回答:1

用于连接 A 列和 B 列中的两个 varchar,例如“1923X”和“11459”与主题标签,虽然我总是希望首先成为最小的字符串,但在 SQL Server 查询中我应该做什么?

输入: 两列

A=“1923X”

B=“11459”

程序:

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

结果:新列 C

“11459#1923X”

sql sql-server string concatenation varchar
1个回答
4
投票

原答案:

如果您需要对输入字符串进行排序,而不仅仅是按第二个字符排序,

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)

如果您想从右到左对存储的文本进行排序,可以选择

REVERSE()

SELECT 
   A, 
   B, 
   C = (
      SELECT STRING_AGG(v.String, '#') WITHIN GROUP (ORDER BY REVERSE(v.String))
      FROM (VALUES (A), (B)) v (String)
   )
FROM (VALUES ('1923X', '11459')) t (a, b)
© www.soinside.com 2019 - 2024. All rights reserved.