簡體   English   中英

有沒有辦法將任何十進制數字與T-SQL'LIKE'表達式匹配?

[英]Is there a way to match any decimal number with T-SQL 'LIKE' expression?

例如,類似:

SELECT * FROM myTable WHERE myColumn LIKE '[0-9]n.[0-9]n'

當然,我知道上面的語法將不起作用,但是我試圖解釋:n位數字,后跟一個句點,后跟n位數字。 謝謝

您可以將以下模式用於無符號十進制值:

SELECT  *, 
        CASE 
            WHEN (x.Col1 LIKE '%[0-9]%.%[0-9]%' /*OR x.Col1 LIKE '.%[0-9]%' OR x.Col1 LIKE '%[0-9]%.' OR x.Col1 LIKE '%[0-9]%'*/) 
            AND x.Col1 NOT LIKE '%[^0-9.]%'  
            THEN 1 ELSE 0 
        END AS IsDecimal,
        ISNUMERIC(x.Col1) AS [IsNumeric]
FROM (
    SELECT '1.23' UNION ALL SELECT '.23' UNION ALL SELECT '1.'  UNION ALL SELECT '123'  UNION ALL 
    SELECT NULL UNION ALL SELECT '' UNION ALL SELECT '1A.23'  UNION ALL SELECT '1.2A3'  UNION ALL SELECT 'A.B'  UNION ALL 
    SELECT '.' UNION ALL SELECT '$' 
) x(Col1)

/*
Col1  IsDecimal   IsNumeric
----- ----------- -----------
1.23  1           1
.23   0           1
1.    0           1
123   0           1
NULL  0           0
      0           0
1A.23 0           0
1.2A3 0           0
A.B   0           0
.     0           1
$     0           1
*/

如果取消注釋/*OR x.Col1 LIKE '.%[0-9]%' OR x.Col1 LIKE '%[0-9]%.' OR x.Col1 LIKE '%[0-9]%'*/ /*OR x.Col1 LIKE '.%[0-9]%' OR x.Col1 LIKE '%[0-9]%.' OR x.Col1 LIKE '%[0-9]%'*/然后將/*OR x.Col1 LIKE '.%[0-9]%' OR x.Col1 LIKE '%[0-9]%.' OR x.Col1 LIKE '%[0-9]%'*/ .23 , 1. and 123 (也)視為有效的十進制值。

不可以,MS SQL中的LIKE僅允許單個字符匹配。

您可以這樣做: [0-9][0-9].[0-9][0-9]要匹配00.00

或類似的任何組合,但它沒有計數或您正在尋找的其他運算符。

您是否需要n或僅需轉換為小數的任何內容

select cast(varDec as Decimal(p,s)) 
where varDec not like '%[^.1-9]%' 
and varDec not like '%.%.%'
and len(varDec) > 0 
and varDec <> '.'

您可以使用PATINDEX在MS SQL中進行模式匹配

兩位匹配兩位數,后跟。 和兩位數。

SELECT *  FROM myTable WHERE PatIndex('[0-9][0-9].[0-9][0-9]', myColumn) >0

也許您正在尋找呢?

SELECT * FROM myTable WHERE ISNUMERIC(myColumn) = 1

暫無
暫無

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

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