我有以下查询。
我只能有7个字符( - 和A-Z组合)
前5个字符(周一至周五)只能有一个“ - ” 对于周六和周日,我们只能有一个角色或破折号 我正在用S
取代Sa和Su然而,每当他们在星期六和/或星期日以两个短划线传球时,我需要用每个短划线替换它们
所有操作后长度只能为7。
我试过w / e我可以但是在星期六/星期日的位置遇到两个与一个短跑的情况。
请帮忙!我会在发现更多内容后随时更新。
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
答案 0 :(得分:2)
尝试在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和其余部分。然后使用几个替换,你可以有正确的Sat / Sun组合。连接两者,你将有最终的决定。
此外,还需要添加两个短划线,您只需要LEFT
7,因为如果您有'--'
,则会被'-'
替换。