Вырезаем числовую часть из начала строки в 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 — Комментарии (14)

  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...

    • Возможность быстрого добавления новых библиотек, написанных на языке С.

      Подальше приведены некоторые примеры объявлений поддиапазонных типов: const

      Вокруг этого языка программирования нетленно было немало споров. Многие критики неоднократно обсуждали тот факт, что Луа разработан для работы с С, а не с С++. Это действительно так.

      Главным алфавитом ЯП Луа считается английский язык. В строковых литералах применяются символы из других ЯП. Идентификаторы состоят из букв, цифр, символа подчеркивания. Они никогда не начинаются с цифры и не имеют совпадений с одним из ключевых слов.

      Пользоваться программой очень легко, это можно сделать в режиме онлайн. Либо скачать в интернете с помощью торрента как и пользоваться без выхода в сеть. потом как архив перестань скачан, его необходимо установить.

      разделитель (необязательно) ? это разделитель. Метод разделяет строку, начиная справа, по указанному разделителю.

      php найти подстроку в строке
      Программист может быть свободно определять другие часто используемые типы данных (например, байты, строки также т. Д.) В терминах предопределенных типов, используя средство объявления типов Паскаля, например

      Имеется средство создания блока кода как одного из операторов в последовательности и объявление в нем переменной, как показано ниже:

      Самым близким из друзей-аристократов для учёного стал герцог де Роанне, увлекавшийся математикой. В доме герцога, где Паскаль подолгу жил, ему была отведена особая комната.

      Время от времени разделитель не задан, то любая пробельная строка (пробел, новая строка как и т.д.) считается разделителем;

      Паскаль — это легкий язык, но с ним можно написать очень жирно миллиончик непростых и нужных программ.

      Часом сделать на этом языке программирования таблицу с самого начала, она не будет иметь метатаблицы.

      Get Certified » W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content.

      Отдельные поля содержат данные о специфических свойствах объекта, в котором находится метатаблица.

  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

  5. мудозвоны блять нахуй пиздец я ебал вас в рот сука долбоебы ебнутые в пизду вас

  6. Attrahtive component of content. I just stumbled upn your blog andd in accession capital to claim that I get actually enjoyed acount
    your blog posts. Any way I'll be subscribing to your feeds and even I fulfillment you gget entry to constantly quickly.

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

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


*

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