Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Отрезать всё что после чисел  [new]
shanton
Member

Откуда: Украина г. Хмельницкий
Сообщений: 628
Есть переменная:
DECLARE @TXT VARCHAR(254)
SET @TXT = '1104 ЩО-94 панель секционная №1222 З/з127-0127'

стоит задача отрезать всё что после чисел, не факт что после чисел будет пробел, могут и сразу буквы пойти. Какой функцией целесообразно воспользоваться?
Большое спасибо!
16 янв 13, 18:02    [13780318]     Ответить | Цитировать Сообщить модератору
 Re: Отрезать всё что после чисел  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
shanton
Какой функцией целесообразно воспользоваться?
Строковой
16 янв 13, 18:06    [13780343]     Ответить | Цитировать Сообщить модератору
 Re: Отрезать всё что после чисел  [new]
Glory
Member

Откуда:
Сообщений: 104751
shanton
Какой функцией целесообразно воспользоваться?

Функцией замены всех нечисловых символов на пустые строки
16 янв 13, 18:07    [13780353]     Ответить | Цитировать Сообщить модератору
 Re: Отрезать всё что после чисел  [new]
Гость333
Member

Откуда:
Сообщений: 3683
shanton
Есть переменная:
 '1104 ЩО-94 панель секционная №1222 З/з127-0127'

стоит задача отрезать всё что после чисел

Что в итоге-то что должно получиться? 1104? 1104 ЩО-94? 1104 ЩО-94 панель секционная №1222?
16 янв 13, 18:10    [13780379]     Ответить | Цитировать Сообщить модератору
 Re: Отрезать всё что после чисел  [new]
Гость333
Member

Откуда:
Сообщений: 3683
shanton,

Так?
DECLARE @TXT VARCHAR(254)
SET @TXT = '1104 ЩО-94 панель секционная №1222 З/з127-0127'
SELECT LEFT(@TXT, PATINDEX('%[^0-9]%', @TXT) - 1)
16 янв 13, 18:15    [13780409]     Ответить | Цитировать Сообщить модератору
 Re: Отрезать всё что после чисел  [new]
shanton
Member

Откуда: Украина г. Хмельницкий
Сообщений: 628
Гость333
shanton,

Так?
DECLARE @TXT VARCHAR(254)
SET @TXT = '1104 ЩО-94 панель секционная №1222 З/з127-0127'
SELECT LEFT(@TXT, PATINDEX('%[^0-9]%', @TXT) - 1)


Спасибо большое! То что искал!!!
16 янв 13, 18:37    [13780532]     Ответить | Цитировать Сообщить модератору
 Re: Отрезать всё что после чисел  [new]
Glory
Member

Откуда:
Сообщений: 104751
shanton
Спасибо большое! То что искал!!!

Что то это не соответствует только постановке задачи
Чем 1104 лучше 1222 ?
16 янв 13, 18:41    [13780555]     Ответить | Цитировать Сообщить модератору
 Re: Отрезать всё что после чисел  [new]
Гость333
Member

Откуда:
Сообщений: 3683
shanton
Спасибо большое! То что искал!!!

Пожалуйста, только имейте в виду, что если строка состоит из одних цифр, то будет выдана ошибка. Безопаснее будет так:
DECLARE @TXT VARCHAR(254)
SET @TXT = '1104'
-- SELECT LEFT(@TXT, PATINDEX('%[^0-9]%', @TXT) - 1) -- Invalid length parameter passed to the LEFT or SUBSTRING function
SELECT LEFT(@TXT, ISNULL(NULLIF(PATINDEX('%[^0-9]%', @TXT) - 1, -1), LEN(@TXT)))
SET @TXT = '1104 ЩО-94 панель секционная №1222 З/з127-0127'
SELECT LEFT(@TXT, ISNULL(NULLIF(PATINDEX('%[^0-9]%', @TXT) - 1, -1), LEN(@TXT)))
16 янв 13, 18:45    [13780574]     Ответить | Цитировать Сообщить модератору
 Re: Отрезать всё что после чисел  [new]
shanton
Member

Откуда: Украина г. Хмельницкий
Сообщений: 628
Glory
shanton
Спасибо большое! То что искал!!!

Что то это не соответствует только постановке задачи
Чем 1104 лучше 1222 ?

Я хочу вытащить начальные цифры, конвертировать их в INT, и по этому полю сортироваты данные в таблице.
16 янв 13, 18:57    [13780625]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить