【发布时间】:2017-02-03 14:59:10
【问题描述】:
我正在使用 SQL Server 2008 R2 函数 ISNUMERIC() 来确定字符串是否为小数。 当小数点为逗号或逗号和句点时,它返回“1”。我可以解决这些问题,但此查询是 SSRS 报告的一部分,将分发给许多用户,我无法纠正所有问题。
我可以使用什么来代替 ISNUMERIC() 来确定字符串是否是正确格式的小数?我不能使用 TRY_PARSE(),因为它在 SQL SERVER 2012 中可用,而我在 2008 R2 上。
更新 我想用 PATINDEX() 替换 ISNUMERIC() 来识别小数。 这两个例子都返回 0
SELECT PATINDEX('9,0', '%[0-9]%.%[0-9]%')
SELECT PATINDEX('9.0', '%[0-9]%.%[0-9]%')
我做错了什么?
【问题讨论】:
-
你的目标是什么?为什么不想使用 ISNUMERIC()?
-
它不起作用。最初,我使用的是 ISNUMERIC()。对于字符串值 '9,.7',此函数返回 'true' 在进行一些搜索后,有人指出不应使用此函数。如果您使用的是 SQL 2012,则可以使用 TRY_PARSE() 但我使用的是 SQL 2008。
-
要获得明确的匹配功能,我认为除了使用正则表达式之外别无他法。此功能不作为 SQL Sever 2008 的标准选项提供。但是,可以添加它。我认为这是中级到高级技术。如果您能够弄清楚这一点,您的 SQL Server 管理员/DBA 可能会说“不可能!”以下是一些链接,其中包含相同解决方案的各种方法,SQL Server 2008 中的正则表达式支持。simple-talk.com/sql/t-sql-programming/…
-
还有一个。这是我必须为我工作的一个。 blogs.sap.com/2013/01/31/…
标签: sql-server-2008-r2 isnumeric