2016-11-08 179 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 

这将始终使用第一个数字作为字符串的其余部分的比较