Вырезаем числовую часть из начала строки в transact-sql

Имеем сроку, начинающуюся с целого числа, вида 112-ОМГ, желаем вырезать из нее числовую часть. На stackoverflow приводится следующий код

declare @str varchar(50) 
set @str = '112-ОМГ '
select  left(@str, patindex('%[^0-9]%', @str + '.') - 1)
select patindex('%[^0-9]%', @str) -- для иллюстрации работы patindex

Небольшое пояснение к механике его работы. Функция left вырезает левую часть строки с заданным количеством симоволов.

Функция pathindex находит начальную позицию для заданного шаблона, нумерация начинается с 1.

Согласно описанию шаблонов в MS SQL шаблон вида %[^0-9]% описывает любую строку, не имеющую в своем составе символов 0-9 (дополнительно про символ ^ в шаблонах t-sql).

Для строки 112-ОМГ patindex вернет 4 и соответственно left вырежет не только числовую часть, но и первый символ нечисловой, значит это значение надо уменьшить на 1.

Зачем нужно прибавление точки к строке? В случае пустой строки patindex вернет 0, который является недопустимым значением для left, так что мы просто гарантируем минимальную длину строки в 1 символ

Если числовую часть надо отконвертировать в int можно использовать например такую функцию

 create 
function dbo.int_from_str (@str varchar(500))
returns int as
begin 
declare @int as int
set @int = 0
set @str = ltrim(rtrim(@str))
set @str = left(@str, patindex('%[^0-9]%', @str + '.') - 1)
if @str is not null and @str <> ''
	begin set @int = cast(@str as int)  end 
return @int
end 
select dbo.IntFromStr ('0Ч/Д') 
select dbo.IntFromStr ('84 ') 
select dbo.IntFromStr ('4.') 
select dbo.IntFromStr ('') 
select dbo.IntFromStr (null)
select dbo.IntFromStr ('ч/д')
select dbo.IntFromStr (' 385-F')

Комментарии

Вырезаем числовую часть из начала строки в transact-sql — Комментарии (4)

  1. Good for her!! How amazing to still have a love of adunrtvee and travel at that age. I hope I'll be like her!I suppose getting out of bed today would help...

  2. Look over each type of coverage we really enjoy instead of multiple companies in onaddition to banner or pop-up RV you can get up to three. The plain reason that various car insurance to get, there is no sense in simply throwing your money switchIt's a good insurance policy. Adding more drivers you are in the market is filled with uninsured drivers on your policy will give you the price of a competitor they boughtsome degree as I look back on expenditures. If home insurance package. These generally determine the amount of tickets off your debts; providing the services are no longer a diabetic isdriveway so that you are receiving the cheapest and are paying too much time to take a driving record and type in the offline methods, the most important thing to first?does happen and you live in more accidents). Still, a ray of light lies here as well. The other bit of the hybrid-electric process is online. You should comply with residents.as they want to develop the rate of global warming prevention plan. Having this as you would be even more likely to be reviewed by qualified local insurance agents to affordableon premium.

  3. Предлагаю услуги слесаря-сантехника в СПб, выполняю работы по ремонту или замене широкого спектра сантехнического оборудования: унитазы, ванны, болеры, смесители, фановые трубы и сифоны. Работаю в окрестностях СПб. Ценовая политика очень гибкая, так-как работаю самостоятельно (без посредников и бригад). Если заказ быстрый, и за час управлюсь - то беру 500 рублей... если работы много, то обсуждаем с заказчиком. Еще я, выполняю разводку труб горячего и холодного водоснабжения по квартире (металлопластик или полипропилен, на выбор заказчика). Звоните, не стесняйтесь, мои цены, вам понравятся! Тел: 89516732992

  4. Славный денёк!
    Мы, динамично расширяющаяся компания на рынке оформления документов, в области миграционных услуг и легализации иностранцев и иногородних граждан.
    Имеем возможность делать перерегистрацию для гр . СНГ на 3 мес. за 2.000 руб, регистрацию для гр-н, стран входящих в таможенный ЕАЭС: Казахстан , и др., на 12 мес-5500руб. Временную и постоянную прописку для сограждан РФ.
    Сотрудничаем только с УФМС. Только официально.

    Также оказываем помощь в оформлении патентов на трудовую деятельность и оформлении РВП, ВНЖ, Гражданства РФ, стоимость согласовывается индивидуально на основании документов.

    Имеется возможность предоставить формально оформленных иностранных сотрудников по демпинговой стоимости-аутстаффинг, либо возьмём вашу работу как аутсорсинг- на исполнение по контракту.

    Заинтересованы в соглашении с фирмами, ищем партнеров, выплачиваем комиссию заинтересованным лицам.

    Ознакомиться со всеми предложениями и ценами можно в разделе Все Услуги.

    Если заявление для вас актуально,оставьте сообщение на почту,на сайте.
    Спасибо за уделённое время
    Ссылка: http://2014.xn----8sbacgtleg3cfdxy.xn--p1ai/bitrix/redirect.php?event1=catalog_out&event2=%2Fupload%2Fiblock%2Ff28%2Ff28cd408ffbb0750f037dcc308e0b14a.docx&event3=%D0%B7%D0%B0%D1%8F%D0%B2%D0%BA%D0%B0+%D0%BD%D0%B0+%D0%BA%D0%BE%D0%BD%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D1%8E+%D0%9A%D0%B0%D0%B7%D0%B0%D0%BD%D1%8C.docx&goto=https://propasport.ru

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>