簡體   English   中英

SQL Replace不適用於大於>

[英]SQL Replace Not working for Greater Than >

我試圖計算列中的所有值Value是超過5。

然而,一些結果在該列中出現像“> 10”(其具有大於符號>在現場)

我仍然認為> 5。

為此,我做了以下工作:

(COUNT(CASE WHEN t.VALUE LIKE '*>*'
        and Replace(t.VALUE, '>', ' ') > 5)
Then 1
Else NULL
End
)

但是,無論出於何種原因,它都不能替代。

那么,如何轉換為數字呢?

select sum(case when try_convert(int, replace(t.value, '>', '')) > 5
                then 1 else 0
           end) as values_over_5

您的數據模型是可疑的,因為您正在對包含數字的列進行數字比較。

有幾件事。

星號不是SQL Server中的有效通配符,因此我們將對其進行更改。

另外,如果您希望字符串變成數字,則需要用空字符串而不是空格代替大號。 它不會影響結果,但這是正確的事情。

這並不像戈登的單線紙那樣優雅,但是卻產生了預期的結果。

DECLARE @t TABLE (VALUE VARCHAR(5));
INSERT @t (VALUE)
VALUES ('1'),('10'),('>10');

SELECT COUNT(*) AS Over5
FROM
  (
    SELECT
     CASE WHEN t.VALUE LIKE '%>%' THEN Replace(t.VALUE, '>', '')
         ELSE t.VALUE
     END AS NewVal
    FROM @t as t
  ) AS d
WHERE NewVal > 5;

+-------+
| Over5 |
+-------+
|     2 |
+-------+

暫無
暫無

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

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