Я знаю, что уже есть некоторые из тех же вопросов, но это меня сбивает с толку.выберите только числовые значения на sql
У меня есть этот запрос:
SELECT
CASE
WHEN COALESCE(substring(location_name FROM '[0-9]+'), location_name) != ''
THEN COALESCE(substring(location_name FROM '[0-9]+'), location_name)
ELSE '1'
END AS sequence
FROM LOCATION
То, что я хотел бы получить от этого запроса является:
- Если
location_name
не содержит каких-либо числовых значений, а затем вернуть1
- Если содержит числовые значения, получите только последние числовые значения (после строки), т.е. c2 карусель 10, должен возвращать только
10
- Если
location_name
содержит только числовые значения, а затем возвращают1
Но что я получаю что-то вроде:
location_name expected result what I get
using [0-9] using [0-9]+
carousel 1 1 1 1
carousel 2 2 2 2
carousel 3 3 3 3
carousel 12 12 1 12
bottom banner 1 bottom banner bottom banner
c2 carousel 1 1 2 2
c2 carousel 3 3 2 2
59977 1 5 59977
Можно ли это сделать в SQL Server?
mysql 'regex' return only' Boolean' вы не можете заменить/фильтровать текст с помощью регулярного выражения, вы должны создать собственную функцию манипуляции с строкой для извлечения результата – Girish
Выглядит честно, как http://stackoverflow.com/q/5651949/ 4099598. –
Взгляните на мой ответ. Я думаю, это именно то, что вы хотите. – Veera