删除SQL Select语句中的非数字值

时间:2014-01-28 15:45:23

标签: mysql sql

我在数据库列VALUE中有一个值:

C_4327

我需要从中删除非数字文本,以便它只留下数字。我尝试在SQL中使用REPLACE函数,但不是我不想替换,只是将它们删除。我之前使用PHP来执行此操作:

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

我正在检索SELECT语句中的值。

我们将不胜感激。

提前致谢

3 个答案:

答案 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'

答案 1 :(得分: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

答案 2 :(得分:0)

简单的方法:子串怎么样......

select substr( value, 3 ) from mytable;

它适用于您的示例 - 但不确定您的真实数据是否更复杂。