Найдите определенные цифры из столбца sql - PullRequest
0 голосов
/ 09 мая 2020

Я хочу извлечь процент из следующего столбца в sql ex

123456789; 01/09/2014 00:00:00; 5%; 1896; 123456ae5. 

Мне нужен только процент. может меняться ie., может иметь любое процентное значение. Чтобы уточнить, процентное значение всегда будет присутствовать после 2 точек с запятой

Ответы [ 3 ]

0 голосов
/ 09 мая 2020

Это довольно уродливо, но это работает ( Fiddle ):

SELECT 
SUBSTRING(
  value,
  CHARINDEX(';', value, CHARINDEX(';', value) + 1) + 1,
  CHARINDEX(';', value, CHARINDEX(';', value, CHARINDEX(';', value) + 1) + 1)
   - CHARINDEX(';', value, CHARINDEX(';', value) + 1) - 1
  )
 from data;

В основном находим индекс второй точки с запятой и сколько символов дальше от третьей точки с запятой, и получение подстроки этого.

0 голосов
/ 10 мая 2020

SQL Сервер имеет паршивые функции обработки строк. Вот один из методов:

select v.*,
       right(v1.str, charindex(';', reverse(v1.str)) - 2)
from (values ('123456789; 01/09/2014 00:00:00; 5%; 1896; 123456ae5. ')) v(str) cross apply
     (values (left(v.str, charindex('%', str) - 1))) v1(str)

Это ищет % и избавляется от строки, начиная с этой точки. Затем он удаляет все, вплоть до символа, следующего за последней точкой с запятой.

0 голосов
/ 09 мая 2020

Используйте string_split для преобразования строки с фиксированными разделителями в строку. Попробуйте ниже,

select value from string_split('123456789; 01/09/2014 00:00:00; 5%; 1896; 123456ae5.',';') 

, где значение вроде '% [%]%'

Результат будет,

 5%
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...