我有以下查询。
我只能有 7 个字符(- 和 A-Z 组合)
前 5 个字符只能有一个“-”(周一至周五) 对于周六和周日,我们只能有一个字符或破折号 我正在用 S 替换 Sa 和 Su
但是,每当他们在星期六和/或星期日传递两个破折号时,我需要将它们分别替换为一个破折号
所以在所有操作之后长度只能是7。
我尽我所能尝试了周六/周日位置的二对一破折号场景。
求助!当我发现更多信息时,我会保持更新。
ADV 中的THX
代码:
CREATE Table TempTable (string varchar(50))
INSERT INTO TempTable (string)
VALUES ('MTWRFSS')
,('MTWRFSaS')
,('MTWRFSaSu')
,('----F--')
,('----F----')
,('MT------')
,('MT------')
,('----FSa--')
,('----FSa-')
,('----FS--')
,('----FS-')
,('----F-Su')
,('----F--Su')
,('----F-S')
,('----F--S')
UPDATE TempTable
SET string = REPLACE(REPLACE(RTRIM(LTRIM(string)),'SA','S'),'SU','S')
SELECT string
,LEN(String) AS stringLengh FROM TempTable
--DROP TABLE TempTable
最佳答案
尝试只操作 5 之后的字符,因为从 MON 到 FRY 你总是有 1 -。 所以我认为这会起作用:
SELECT
string as InitialString
,LEFT(LEFT(String,5) + replace(replace(replace(RIGHT(String,LEN(String)-5),
'Sa','S'),'Su','S'),'--','-') + '--',7) as FinalString
FROM TempTable;
您必须将字符串切成 2 份:剩下 5 份,其余的。然后使用几个替换你可以有正确的周六/周日组合。将两者连接起来,您将拥有最终决定权。
还必须添加 2 个破折号,并且您只需要 LEFT
7,因为如果您有 '--'
它将被替换为 '- '
.
关于sql - T/SQL - 字符串操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19936048/