2014-01-28 5 views
-1

У меня есть значение в значение столбца базы данных:Удалить Non числовых значений SQL Select Заявление

C_4327 

мне нужно лишить нечисловой текст от этого, так что он просто оставляет номера. Я попытался использовать функцию REPLACE в SQL, но не хочу, чтобы я ее не заменял, просто разделите их. Раньше я использовал PHP для этого:

preg_replace("/[^0-9]/","",$row['VALUE']); 

Я извлекаю значение в инструкции SELECT.

Ваша помощь будет оценена.

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

+0

какая плата RDBMS? –

+0

Извините, что я использую MySQL – andy

+0

, который вы хотите обрезать и сохранить снова в БД или? –

ответ

2

Если вы хотите, чтобы получить число в конце строки, вы можете использовать следующие аркан подход:

select reverse(reverse(value) + 0) as NumberAtEnd; 

В вашем случае:

  • value = '' C_4327
  • reverse(value) = '7234_C'
  • reverse(value) + 0 = 7234
  • reverse(reverse(value) + 0) = '4327'
+0

Спасибо, это именно то, что я искал, и он сработал. Еще раз спасибо. – andy

1

вы можете создать функцию, как, что /.

CREATE FUNCTION GetNumeric 
(
@strAlphaNumeric VARCHAR(256)) 
RETURNS VARCHAR(256) 
AS BEGIN 
DECLARE @intAlpha INT 
SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric) 
BEGIN 
WHILE 
@intAlpha > 0 
BEGIN 
SET @strAlphaNumeric = STUFF(@strAlphaNumeric, @intAlpha, 1, '') 
SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric) 
END 
END 
RETURN ISNULL(@strAlphaNumeric,0) 
END 
GO 

затем вызвать функцию следующим образом

SELECT GetNumeric('123456789blahblahblah') AS filedname FROM your_table 

вы получите ответ: 123456789

0

простой способ: как насчет подстроки ...

select substr(value, 3) from mytable; 

он работает на вашем примере - но n если ваши реальные данные более сложны.

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