gpt4 book ai didi

sql - 像 int 一样选择和过滤 nvarchar

转载 作者:行者123 更新时间:2023-12-03 04:16:32 34 4
gpt4 key购买 nike

我的 MS SQL 2005 数据库的表 McTable 中有一个 nvarchar 列 BigMacs,其中包含字母数字和数值。例如:

  • 132
  • 432adfad
  • sfs54543
  • 5256

现在我想做这样的事情:

select Convert(BigMacs, int) from McTable
where IsNumerc(BigMacs) = 1 AND Convert(BigMacs, int) > 6

但是当我这样做时,我收到一个错误:

Msg 245, Level 16, State 1, Line 41 Conversion failed when converting the nvarchar value '.' to data type int.

在线选择。

如何解决这个问题?

最佳答案

这可能是因为 IsNumeric 函数对于任何可以转换为数字的值都返回 true。尝试以下示例:

create table McTable  (BigMac varchar(255))

insert into McTable select '1p927'
insert into McTable select '1927'
insert into McTable select '1,927'
insert into McTable select '1.927'

select BigMac, isnumeric(BigMac)
from McTable

select BigMac, CAST(BigMac AS DECIMAL)
from McTable
where isnumeric(BigMac) = 1

即使除了“1p927”之外的所有行都是数字,转换也会失败!这是因为“1,927”无法转换为十进制(在我的机器上)

IsNumeric 不完全按照指定的方式工作。发现here ,你可以使用

IsNumeric (data + 'e0')

-江户

关于sql - 像 int 一样选择和过滤 nvarchar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/725042/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com