仅当字符串 > 特定长度时,才将字符添加到字符串的特定位置
Posted
技术标签:
【中文标题】仅当字符串 > 特定长度时,才将字符添加到字符串的特定位置【英文标题】:Add a character to a specific position of a string only if the string is > a particular length 【发布时间】:2021-05-04 16:13:20 【问题描述】:我的平板电脑有一列数据如下所示:
A785
B21423
21432
031258A
358
Z94
我想添加一个“。”仅当原始字符串有 4 个或更多字符时才作为第 4 个字符,这将导致:
A78.5
B21.423
214.32
031.258A
358
Z94
我在 SQL Server Management Studio 18 中执行此操作
谢谢
【问题讨论】:
【参考方案1】:我建议:
select (case when len(str) >= 4
then stuff(str, 4, 0, '.')
else str
end)
【讨论】:
【参考方案2】:请尝试以下解决方案。
SQL
-- DDL and sample data population, start
DECLARE @tbl TABLE (ID INT IDENTITY PRIMARY KEY, token VARCHAR(30));
INSERT INTO @tbl (token) VALUES
('A785'),
('B21423'),
('21432'),
('031258A'),
('358'),
('Z94');
-- DDL and sample data population, end
SELECT *
, IIF(size > 3, CONCAT(LEFT(token, 3), '.', RIGHT(token, size - 3))
, token) AS tokenNew
FROM @tbl
CROSS APPLY (SELECT LEN(token)) AS t(size);
输出
+----+---------+------+----------+
| ID | token | size | tokenNew |
+----+---------+------+----------+
| 1 | A785 | 4 | A78.5 |
| 2 | B21423 | 6 | B21.423 |
| 3 | 21432 | 5 | 214.32 |
| 4 | 031258A | 7 | 031.258A |
| 5 | 358 | 3 | 358 |
| 6 | Z94 | 3 | Z94 |
+----+---------+------+----------+
【讨论】:
谢谢,这确实有效,但我希望无需先创建新表即可。 @Freonthewhite,您不需要创建新的数据库表。我为您提供了一个最小的可重现示例。您将其复制到 SSMS 并且它可以工作。您只需要使用SELECT
语句,并将其修改为您的真实数据库表名及其列。
@Freonthewhite,如果建议的解决方案对您有用,请不要忘记将其标记为答案。以上是关于仅当字符串 > 特定长度时,才将字符添加到字符串的特定位置的主要内容,如果未能解决你的问题,请参考以下文章
MongoDB/Mongoose - 仅当某个字段是唯一的时才将对象添加到对象数组中