一千萬個為什麽

搜索

從Varchar字段中查找最大值

我有一個數據庫字段,稱為SCORES,有分數 值可能如下所示

123

14

56 *

342

423 *

我將它存儲在數據庫的Varchar字段中。

假設如果我將其轉換為整數數據類型,那麽我可以寫 最大(SCORES)並獲得最高分或最高分。 但是Integer不允許像*這樣的特殊字符。

(這裏*表示該分數的一些條款)

為了讓我已經把它變成了varchar。

使用最少的編程方法,最簡單的方法是獲得最高分。

因此,如果我執行一個查詢,我應該得到答案

423 *

請建議我

最佳答案

我認為你的查詢應該是通用的,以獲得最高分,今天你只有'*'附加分數,但將來可能你使用其他一些字符或者你可能使用某些字符組合,所以你應該照顧那個場景。

所以如果你創建一個用戶定義函數會更好,它將varchar作為輸入並從輸入字符串返回數字,如果你傳遞'1234 *'然後函數將返回1234並且如果你傳遞1234 **它將返回1234 。

CREATE FUNCTION dbo.ParseNumeric
(
  @string VARCHAR(8000)
)
RETURNS VARCHAR(8000)
AS
BEGIN
  DECLARE @IncorrectCharLoc SMALLINT
  SET @IncorrectCharLoc = PATINDEX('%[^0-9A-Za-z]%', @string)
  WHILE @IncorrectCharLoc > 0
  BEGIN
    SET @string = STUFF(@string, @IncorrectCharLoc, 1, '')
    SET @IncorrectCharLoc = PATINDEX('%[^0-9]%', @string)
  END
  SET @string = @string
  RETURN @string
END
GO

然後使用:

select max(cast(dbo.ParseNumeric(score) as int)) from tableName

轉載註明原文: 從Varchar字段中查找最大值