【发布时间】:2015-11-04 17:51:02
【问题描述】:
我有一个 80 列的表。其中 60 列是数字字段。我想检查列值是否为数字我可以使用
SELECT * FROM IPP where isnumeric(2009)=1
2009 是列名
有没有办法可以在非数字中使用通配符%200%,即
isnumeric('%200%')
因为我每年有大约 60 列,并且这些列会随着时间的推移而增加
我正在尝试这个
SELECT * FROM IPP where isnumeric('%2009%')=1
有可能吗?
【问题讨论】:
-
没有。但是你可以编写一些动态 SQL 来为你做这件事。这是一个开始:stackoverflow.com/questions/20463365/… 从这个开始,如果遇到困难,请回复。
-
1.您的数据模型似乎很糟糕。新数据永远不应导致新列,而只能导致新行。 (即您要添加 data 而不是更改 data structure。) 2. 2009 是一个错误的列名。您不应该使用数字作为列名,以避免混淆和使用它们的麻烦。 3. 如果你有 60 个数字列,那么里面的数据当然是 数字的;您不能将非数字放在数字列中。或者你是说你想检查空值? 我的强烈建议:改变你的数据模型。这会让你的事情变得更容易。
-
问题是客户端将以 2009 列的格式向我们提供文件,我动态地将它们作为 sql server 中的行取消透视。现在我想验证 sql server 中的客户端文件以检查这些列是否应该只有数字字段。
-
啊,好吧。我想我会检查甚至可能转换文件之前将其导入数据库。
-
我也这样做了,但是在 excel 中旋转它们需要太多时间,而且对于少数表格来说,它超出了 excel 的限制:(
标签: sql sql-server sql-server-2012