【发布时间】:2016-02-23 19:16:06
【问题描述】:
我需要知道如何从 varchar 数据类型的 outputformula 列中获取数值。
我在动态 sql 查询中使用这个 outputformula 列来执行数学计算。
我有下面的表格代码和用于获取值的选择查询。
Create table #table1
(
IDNUM int,
outputformula varchar(60)
)
insert into #table1
values
(1, '67349.000 +78343.000'),
(2, 'a +78343.000'),
(3, '45783.00+b'),
(4, '6152.000 +1524.000'),
(5, 'cda +7151.000'),
(6, '67349.000 +78343.000')
Select outputformula from #table1 where ISNUMERIC(outputformula) =1
当我执行代码时,我没有得到任何值,有没有办法只输出除列中的字母之外的数值......
我应该得到输出列
67349.000 +78343.000
6152.000 +1524.000
67349.000 +78343.000
【问题讨论】:
-
看起来您必须查找拆分器来拆分字符串(使用空格作为分隔符),然后在返回时使用 ISNUMERIC 函数。
-
你是怎么得到
NULLs的?您的查询根本不返回任何行。你能用你的预期结果编辑你的问题吗? -
你最好写一个 UDF,而不是试图强行使用 ISNUMERIC。
-
ISNUMERIC 是一个可怕的命名函数。它应该更像 IsTheValueSomethingThatCanBeConvertedToAnyDatatypeThatIsRoughlyNumberOriented。当然,这完全是太长了。但是 IsNumeric 会返回很多误报。 1e2 或 $ 都评估为真。
-
大家好......感谢 cmets......我需要输出用于在动态 SQL 中进行数学运算......因此我刚刚添加了一些编辑......
标签: sql sql-server sql-server-2012