[英]in SQL how can I remove the first 3 characters on the left and everything on the right after an specific character
[英]How to remove the first character if it is a specific character in SQL
我目前有一個表Telephone
它有如下條目:
9073456789101
+773456789101
0773456789101
我想要做的是從所有有 9 的條目的開頭只刪除 9,但保留其他條目。
任何幫助將不勝感激。
雖然所有其他答案可能也有效,但我建議嘗試使用STUFF
函數來輕松替換字符串的一部分。
UPDATE Telephone
SET number = STUFF(number,1,1,'')
WHERE number LIKE '9%'
這是代碼和SQLFiddle
SELECT CASE
WHEN substring(telephone_number, 1, 1) <> '9'
THEN telephone_number
ELSE substring(telephone_number, 2, LEN(telephone_number))
END
FROM Telephone
Update Telephone set number = RIGHT(number,LEN(number)-1) WHERE number LIKE '9%';
UPDATE dbo.Telephone
SET column_name = SUBSTRING(column_name, 2, 255)
WHERE column_name LIKE '9%';
我最近用 RIGHT()、LEN() 和 PATINDEX() 的組合解決了一個類似的問題。 當 PATINDEX 找到第一個字符時,它會返回整數 1,否則返回 0。 此方法允許在沒有 CASE WHEN 語句的情況下立即返回所有記錄。
SELECT
RIGHT(number, LEN(number) - PATINDEX('9%', number))
FROM Telephone
DECLARE @STR nvarchar(200) = 'TEST'
SET @STR = STUFF(@STR,1,1,'')
PRINT @STR
結果將是“EST”
東西是一個很好的功能。 但是,將它與帶有 where 子句的更新語句一起使用很棒,但是如果我正在執行插入操作,並且我需要在一次傳遞中插入所有行呢? 如果是句點,下面將刪除第一個字符,不使用較慢的 case 語句,並將空值轉換為空字符串。
DECLARE @Attachment varchar(6) = '.GIF',
@Attachment2 varchar(6)
SELECT
@Attachment2 = ISNULL(ISNULL(NULLIF(LEFT(@Attachment, 1), '.'), '') + STUFF(@Attachment, 1, 1, ''), '')
SELECT
@Attachment2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.