powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как удалить символы слева до определенного символа
7 сообщений из 7, страница 1 из 1
Как удалить символы слева до определенного символа
    #39938048
vKateriinav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!!!Подскажите, пожалуйста, как можно удалить все символы слева, до определенного символа?

Пример: допустим, есть мейлы
1378856623@abc.ru
23454@zgffyx.ru
4333356@rtbbygfh.ru
789@hk.ru

Нужно удалить все символы слева до @, чтобы получилось вот так:

abc.ru
zgffyx.ru
rtbbygfn.ru
hk.ru
...
Рейтинг: 0 / 0
Как удалить символы слева до определенного символа
    #39938049
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Достаточно взять все символы справа от @.
Ну, строковые функции вам в помощь. charindex / len / right и прочие.
...
Рейтинг: 0 / 0
Как удалить символы слева до определенного символа
    #39938097
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
SELECT STUFF(S,1,ISNULL(NULLIF(CHARINDEX('@',S),0),0),'') FROM T;
...
Рейтинг: 0 / 0
Как удалить символы слева до определенного символа
    #39938120
Фотография PsyMisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vKateriinav,


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
IF OBJECT_ID('Tempdb..#TempTable') IS NOT NULL
DROP TABLE #TempTable

CREATE TABLE #TempTable
(
String_Value NVARCHAR(40)
)

DECLARE @i as INT
set @i = 1

WHILE  @i <= 10
BEGIN
	DECLARE @New_Email AS NVARCHAR(40)
	SET @New_Email = REPLACE(NEWID(), '-','') + '@mail.ru'		
		INSERT INTO #TempTable SELECT @New_Email
	SET @i+=1 
END

SELECT
String_Value AS 'Initial string',
SUBSTRING(String_Value, 0, CHARINDEX('@', String_Value)) AS 'Left before @',
SUBSTRING(String_Value, CHARINDEX('@', String_Value) +1, LEN(String_Value)) AS 'Right after @',
SUBSTRING(String_Value, CHARINDEX('@', String_Value) +1, CHARINDEX('.', String_Value) - CHARINDEX('@', String_Value) - 1) AS 'Between DOT and @'
FROM #TempTable AS t


...
Рейтинг: 0 / 0
Как удалить символы слева до определенного символа
    #39938124
Фотография PsyMisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyMisha,

Соответственно - именно модифицировать строку по примеру выше - можно по шаблону

Код: sql
1.
2.
3.
UPDATE t
SET t.String_Value =  SUBSTRING(String_Value, CHARINDEX('@', String_Value) +1, LEN(String_Value))
FROM #TempTable AS t
...
Рейтинг: 0 / 0
Как удалить символы слева до определенного символа
    #39938161
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyMisha
PsyMisha,

Соответственно - именно модифицировать строку по примеру выше - можно по шаблону

Код: sql
1.
2.
3.
UPDATE t
SET t.String_Value =  SUBSTRING(String_Value, CHARINDEX('@', String_Value) +1, LEN(String_Value))
FROM #TempTable AS t

А что будет, если в строке нет символа "@"?
...
Рейтинг: 0 / 0
Как удалить символы слева до определенного символа
    #39938193
Фотография PsyMisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iap,

Эксепшн будет, - часть строк проапдейтится, часть - нет
Но мы же пока не разрабатываем прям приложение-приложение тут - у Заказчика был минимальный вопрос, - таблица с емейлами - исходим из того, что данные лежат ровно - вот и минимальный ответ с моей стороны :)

Так, на будущее - можно через CASE обработать присутствие или отсутствие символа, и обработать только тот поток данных в результирующем наборе, что имеет символ "@"
и проапдейтить только его
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как удалить символы слева до определенного символа
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]