簡體   English   中英

在SQL Select語句中刪除非數值

[英]Remove Non Numeric Values Within SQL Select Statement

我在數據庫列VALUE中有一個值:

C_4327

我需要從中剝離非數字文本,以便僅保留數字。 我試過在SQL中使用REPLACE函數,但不是我不想替換,只需將它們剝離即可。 我以前使用PHP來做到這一點:

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

我正在SELECT語句中檢索值。

您的幫助將不勝感激。

提前致謝

如果要在字符串末尾獲取數字,則可以使用以下奧秘方法:

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

在您的情況下:

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

您可以創建一個類似的功能。

  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

簡單方法:子字符串如何...

select substr( value, 3 ) from mytable;

它適用於您的示例-但不確定您的真實數據是否更復雜。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM