c# - 我需要从表中获取数字类型列

标签 c# sql-server-2008 sql-server-2008-r2 sql-server-2012

我需要使用列表中保存的数据实时创建一些 SQL 脚本。我使用一些硬编码文本和格式字符串以及字符串生成器来执行此操作。到目前为止,这是可行的,但我遇到了一个问题,因为我的代码总是在要插入的值两边加上单引号。如果该字段是非数字类型,则此操作会失败,因为我需要创建不带引号的值。由于某些文本字段也使用数字,我无法解析列表中的值。我的计划是运行如下所示的内容来获取给定表的列详细信息。

EXEC sp_columns tablename

我已经根据 C# 中 COLUMN_NAME 和 TYPE_NAME 的输出创建了一个字典。这并不理想,因为我仍然需要进行一些解析来查看类型是否是数字。我想做的是运行一个查询,如果类型是数字(int、float、real 等),则仅返回 COLUMN_NAME。然后,我的 C# 代码可以检查列表以查看我当前正在处理的字段是否存在。如果是这样,我不会引用该值。任何人都可以建议我可以运行的查询可以做到这一点吗?

最佳答案

信息架构包含所有这些信息,因此此查询可以工作:

SELECT [COLUMN_NAME],[DATA_TYPE] FROM [INFORMATION_SCHEMA].[COLUMNS] 
WHERE [TABLE_NAME] = 'Table_1' AND [NUMERIC_PRECISION] IS NOT NULL

关于c# - 我需要从表中获取数字类型列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20631425/

相关文章:

sql-server - 查找特定的特殊字符 SQL Server 2008 R2

SQL 服务器 2008 R2 : update one occurrence of a group's NULL value and delete the rest

c# - 如何阻止 Selenium 在 iOS Safari 上点击屏幕外的元素?

c# - 在 C# 中跨类强制方法命名一致性

c# - 方法重载决议系统如何决定在传递空值时调用哪个方法?

sql - 基于另一个行字段值更新字段

c# - 共享点 : How can I programmatically add items to a custom list instance

sql - 将值转换为单行

c# - MVC/EF/LINQ中如何执行存储过程并获取返回结果

sql - 在SQL Server存储过程中处理重复方案