Вопрос:
В настоящее время у меня есть таблица Telephone, у нее есть записи вроде:
9073456789101 +773456789101 0773456789101
Что я хочу сделать, это удалить только 9 с начала всех записей, в которых есть 9, но оставить остальных такими, какими они есть.
любая помощь будет принята с благодарностью.
Лучший ответ:
Хотя все остальные ответы, вероятно, также работают, я бы предложил попробовать STUFF, чтобы легко заменить часть строка.
UPDATE Telephone SET number = STUFF(number,1,1,») WHERE number LIKE ‘9%’
Ответ №1
Вот код и SQLFiddle
SELECT CASE WHEN substring(telephone_number, 1, 1) <> ‘9’ THEN telephone_number ELSE substring(telephone_number, 2, LEN(telephone_number)) END FROM Telephone Ответ №2Update Telephone set number = RIGHT(number,LEN(number)-1) WHERE number LIKE ‘9%’; Ответ №3UPDATE dbo.Telephone SET column_name = SUBSTRING(column_name, 2, 255) WHERE column_name LIKE ‘9%’; Ответ №4DECLARE @STR nvarchar(200) = ‘TEST’ SET @STR = STUFF(@STR,1,1,») PRINT @STR
Результат будет “EST”
Ответ №5
Вещь – отличная функция для этого. Однако использование его с оператором update с предложением where отлично, но что делать, если я делаю вставку, и мне нужны все строки, вставленные за один проход. Ниже приведен первый символ, если он является периодом, не использует оператор более медленного случая и преобразует нули в пустую строку.
DECLARE @Attachment varchar(6) = ‘.GIF’, @Attachment2 varchar(6) SELECT @Attachment2 = ISNULL(ISNULL(NULLIF(LEFT(@Attachment, 1), ‘.’), ») + STUFF(@Attachment, 1, 1, »), ») SELECT @Attachment2