连接两个字符串并首先将较小的字符串放入 sql 服务器
concat two strings and put smaller string at first in sql server
用于连接 A 列和 B 列中的两个 varchars,例如“1923X”和“11459”与主题标签,而我总是希望最小的字符串首先成为,我应该在 SQL 服务器查询中做什么?
输入:
两列
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)
用于连接 A 列和 B 列中的两个 varchars,例如“1923X”和“11459”与主题标签,而我总是希望最小的字符串首先成为,我应该在 SQL 服务器查询中做什么?
输入: 两列
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)