我在数据库列VALUE中有一个值:
C_4327
我需要从中删除非数字文本,以便它只留下数字。我尝试在SQL中使用REPLACE函数,但不是我不想替换,只是将它们删除。我之前使用PHP来执行此操作:
preg_replace("/[^0-9]/","",$row['VALUE']);
我正在检索SELECT语句中的值。
我们将不胜感激。
提前致谢
答案 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;
它适用于您的示例 - 但不确定您的真实数据是否更复杂。