2016-11-08 112 views
-1

我正在嘗試編寫一個SQL查詢,該查詢僅返回特定列(比如'amount'列)包含僅包含一個數字的數字的行,例如只有'1's(1111111 ...)或只有'2's(2222222 ...)等SQL Server:如何選擇包含僅包含一個數字的值的行

此外,'amount'列還包含帶小數點的數字,這些類型的值也應返回,例如1111.11,2222.22,等

+0

您試過了什麼?這不是一個代碼寫入服務。請相應地編輯您的問題。 –

+0

試過以下內容:select * from [tablename] where amount = REPLICATE('1',len(amount)) – Tony

回答

0

如果您正在使用SQL Server,那麼你可以試試這個腳本:

SELECT * 
FROM (
     SELECT CAST(amount AS VARCHAR(30)) AS amount 
     FROM TableName 
)t 
WHERE LEN(REPLACE(REPLACE(amount,'1',''),'.','') = 0 OR 
     LEN(REPLACE(REPLACE(amount,'2',''),'.','') = 0 
+0

嗨,按照你的建議嘗試,並且在下面的錯誤被引發,並用紅色標出where子句:'表達式在預期條件的上下文中指定的非布爾類型' – Tony

+0

是,只更改列/表名 – Tony

+0

其非常直的前導選擇命令。在替換列/表名時可能會丟失一些東西 –

0

我試着像這樣的地方1111111與列名替換:

Select replace(Str(1111111, 12, 2),0,left(11111,1)) 
1

如果你想使查詢通用,你不必指定每個可能的數字,你可以改變以下內容:

WHERE LEN(REPLACE(REPLACE(amount,LEFT(amount,1),''),'.','') = 0 

這將始終使用第一個數字作爲字符串的其餘部分的比較