Как получить только числовые значения из строки
Как получить числовое значение из строки в SQL
Что я уже пробовал:
Я пробовал с patindex, но я не могу повторить цикл
То, что вы хотите сделать, не будет достигнуто каким-то базовым ПАТИНДЕКСОМ, вам нужно будет запустить цикл для строки и получить из него каждое числовое значение. Рассмотрим в качестве примера следующую функцию SQL.
CREATE FUNCTION NumbersFromString (@string VARCHAR(100)) RETURNS VARCHAR(100) AS BEGIN DECLARE @loc INT --Get the location of the first letter in the string that is not a number. SET @loc = PATINDEX('%[^0-9]%', @string ) BEGIN --Iterate till there is a non-numeric letter in the string. WHILE @loc > 0 BEGIN --Replace the letter found at the location with ''. SET @string = STUFF(@string , @loc, 1, '' ) --Set location to next letter. SET @loc = PATINDEX('%[^0-9]%', @string ) END END --Return result. RETURN ISNULL(@string, 0) END;
Вот это да!
Спасибо снова.
Другой вариант - использовать регулярное выражение. Видеть:
TSQL не регулярные инструментальные средства выражения - простой разговор[^]
Как развернуть функцию регулярного выражения на SQL server[^]