Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
LisSp Member Откуда: Сообщений: 186 |
Добрый день! Как можно удалить первый символ столбца? Кол-во символов всегда разное, но первый символ, который надо убрать-всегда одинаковый. Например, у меня по запросу выводятся каждый раз разные данные: select Str1 from Table
Надо убрать "1" -первый символ. Может быть заменить "1" пробелом с помощью replace, а затем убрать пробелы с помощью rtrim? Или можно попроще? |
||||
17 мар 14, 08:06 [15735765] Ответить | Цитировать Сообщить модератору |
LisSp Member Откуда: Сообщений: 186 |
Не.. мой вариант не подходит таки.. Т.к. там символ "1" может быть и в середине строки и его нужно оставить.. |
17 мар 14, 08:08 [15735770] Ответить | Цитировать Сообщить модератору |
tpg Member Откуда: Novosibirsk Сообщений: 23902 |
SUBSTRING()
Сообщение было отредактировано: 17 мар 14, 08:22 |
17 мар 14, 08:22 [15735799] Ответить | Цитировать Сообщить модератору |
LisSp Member Откуда: Сообщений: 186 |
Точно! Спасибо! |
||
17 мар 14, 08:24 [15735803] Ответить | Цитировать Сообщить модератору |
Cygapb-007 Member Откуда: Сообщений: 1677 |
stuff() - оно попроще, длину строки не надо вычислять:) |
17 мар 14, 09:02 [15735933] Ответить | Цитировать Сообщить модератору |
Avangard1987 Member Откуда: Сообщений: 15 |
1-ый параметр - строка, с которой работаем 2-ой параметр - номер символа, с которого делаем замену 3-ий параметр - длина подстроки, которую будем заменять 4-ый параметр - строка, на которую будем заменять Т.е. первый символ заменяем на пустую строку. |
||
17 мар 14, 09:21 [15735982] Ответить | Цитировать Сообщить модератору |
LisSp Member Откуда: Сообщений: 186 |
Спасибо!!! |
17 мар 14, 09:28 [15736004] Ответить | Цитировать Сообщить модератору |
Азагаш Member Откуда: Сообщений: 450 |
select substr('1Мандарин', 2) from dual |
17 мар 14, 12:05 [15737048] Ответить | Цитировать Сообщить модератору |
Азагаш Member Откуда: Сообщений: 450 |
я форумом ошибся |
||
17 мар 14, 12:06 [15737060] Ответить | Цитировать Сообщить модератору |
Между сообщениями интервал более 1 года. |
982183 Member Откуда: VL Сообщений: 3374 |
Встала аналогичная задача. в MS SQL первый раз пытаюсь сделать На фоксе всё элементарно replace all fio.kv with substr(fio.kv,4,10) for fio.kv="кв." А как и где на MS SQ запустить подобную конструкцию? |
3 апр 15, 09:12 [17467532] Ответить | Цитировать Сообщить модератору |
Akina Member Откуда: Зеленоград, Москва, Россия Сообщений: 20960 |
982183, ненадо рассказывать, как что-то делается где-то. Сформулируйте задачу, а мы подскажем, как её реализовывать. И да - версию сервера не забывайте озвучивать. |
3 апр 15, 09:37 [17467639] Ответить | Цитировать Сообщить модератору |
LSV Member [заблокирован] Откуда: Киев Сообщений: 30817 |
Но сначала озвучьте задачу. Цифры надо удалить ? |
||
3 апр 15, 10:44 [17468020] Ответить | Цитировать Сообщить модератору |
Sergey Sizov Member Откуда: Сообщений: 1558 |
Убрать первые четыре символа в поле если содержимое этого поля начинается на "кв." |
||||
3 апр 15, 10:52 [17468096] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47045 |
UPDATE T SET F=STUFF(F,1,4,'') WHERE F LIKE 'кв.%'; |
||||
3 апр 15, 10:56 [17468119] Ответить | Цитировать Сообщить модератору |
Sergey Sizov Member Откуда: Сообщений: 1558 |
iap, прошу прощения, чуть-чуть ошибся. substr(fio.kv,4,10) означает получение десяти символов начиная с четвертого. В общем, обычный substring(). То есть stuff() тут не совсем подходит. |
3 апр 15, 11:07 [17468198] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47045 |
UPDATE T SET F=STUFF(F,4,10,'') WHERE F LIKE 'кв.%';В HELP по функции STUFF заглянуть не пробовали? https://msdn.microsoft.com/ru-ru/library/ms188043(v=sql.120).aspx |
||
3 апр 15, 11:11 [17468218] Ответить | Цитировать Сообщить модератору |
Sergey Sizov Member Откуда: Сообщений: 1558 |
iap, пробовал. :) Но substring() таки ближе к тому, что показал вопрошавший. |
3 апр 15, 11:40 [17468406] Ответить | Цитировать Сообщить модератору |
982183 Member Откуда: VL Сообщений: 3374 |
Искренне благодарен. направление копания ясно. И всё же не substr(fio.kv,4,10) Это убрать не первые 4, а первые 3 Исправляюсь с постановкой. Задача простая - есть поле kv в табличке fio (номер квартиры в справочнике неких людей) Изначально было сделано неправильно, и в данное поле операторы вводили префиксы "кв " "кв" "кв." "Кв." и т.д. Задача - убрать эти нечисловые префиксы Все возможные префиксы нашел и сгруппировал. Осталось написать и запустить скрипт. |
4 апр 15, 05:00 [17472686] Ответить | Цитировать Сообщить модератору |
982183 Member Откуда: VL Сообщений: 3374 |
Я правильно понял, что в приведенном примере T - имя таблицы F - имя поля % - пробел ? |
4 апр 15, 05:02 [17472687] Ответить | Цитировать Сообщить модератору |
982183 Member Откуда: VL Сообщений: 3374 |
Сделал вот так:UPDATE dbo.fio SET fio.kvn_pr=REPLACE(fio.kvn_pr,'кв.',''); Жду критики |
4 апр 15, 05:29 [17472701] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47045 |
![]() |
||
4 апр 15, 11:02 [17473047] Ответить | Цитировать Сообщить модератору |
982183 Member Откуда: VL Сообщений: 3374 |
Вот до сегодняшнего дня и не знал. Спасибо что указали. Всё же синтаксис привычных инструментов отличается |
7 апр 15, 09:26 [17481930] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |