2014-01-10 11 views
-1

У меня есть столбец Property в таблице Order. Мы использовали для хранения dictionary(varchar) в этой колонке. Теперь у нас есть новый столбец (int), который называется ShoeSize, который имеет значение по умолчанию 0.Извлечь числовое значение из строки SQL

Итак, я хочу получить только числовое значение из столбца Property и обновить столбец ShoeSize с этим значением.

Property значение столбца выглядит следующим образом:

ShoeSize<|$à&£#>15<|@ç§~#> 

или

ShoeSize<|$à&£#>3<|@ç§~#> 

Мой вопрос:
Как я могу управлять моей SQL в оператора выбора, чтобы выбрать только числовое значение Property колонка? Таким образом, другими словами, как я мог бы только с 15 или 3

Заранее спасибо.

+0

будет этот формат является статическим. Как числовое значение всегда будет в этом положении только? –

+0

В какой базе данных вы используете MSSQL, Oracle или MySQL? –

+0

Да, это правильно – user1702369

ответ

2

Если вы использование MSSQL и ваш формат фиксированной, то вы можете попробовать, как показано ниже

DECLARE @str VARCHAR(50) 
SET @str = 'ShoeSize<|$à&£#>15<|@ç§~#>' 
SELECT SUBSTRING(@str,CHARINDEX('£#>',@str) + 3, CHARINDEX('<|@',@str) - (CHARINDEX('£#>',@str) + 3)) 
0

Вы можете использовать REGEXP_SUBSTR для извлечения чисел из своей строки.

Например,

SELECT REGEXP_SUBSTR('ShoeSize<|$à&£#>15<|@ç§~#>','[[:digit:]]+') FROM dual; 

вернется 15 к вам. Конечно, мое предположение состоит в том, что размер обуви в вашей строке будет числом, и вы не должны сопоставлять все цифры, которые происходят в вашей строке, чтобы прийти к числу, которое вы сохраните в качестве размера обуви.

+0

OP нужен он на SQL-сервере, поэтому функция regexp_substr() не будет работать. –

+0

Мое плохое! Я как-то пропустил, что ему это нужно для SQL Server. – Incognito

Смежные вопросы