sql - 有没有办法用 SQL Server 检测列数据类型?
问题描述
我知道这些详细信息是关于信息模式的,但我的表包含 varchar(max) 形式的所有列,因为它们是直接从平面文件源写入的。我想根据列中的值检测列类型。我无法控制数据的输入方式,所以这张表是我的来源。
因此,例如,如果 Column1 具有 {1, 2, 100, 'NA', NULL, 'Not available', 'Not provided by vendor'} 等值,我当前的 SQL 语句将此列分类为 varchar。我希望能够动态地为该列分配一个 INT。我们可以放心地假设传入的整数数量将大于列中的其他类型字段。
解决方案
如果您的列包含“NA”、“不可用”、“供应商未提供”等数据,则它不能是数字,您必须先清理数据,然后相应地更改数据类型
对于数字数据,您可以使用 ISNUMERIC 函数检查
https://docs.microsoft.com/en-us/sql/t-sql/functions/isnumeric-transact-sql?view=sql-server-2017
对于日期数据,您可以使用 ISDATE 功能检查
https://docs.microsoft.com/en-us/sql/t-sql/functions/isdate-transact-sql?view=sql-server-2017
推荐阅读
- spring - 使用 Spring Cloud Gateway 成功路由后的白页
- python - 有没有更好的方法来退出递归?
- python - matlab for循环到python循环
- python - 使用 pyttsx3 的 DialoGPT 输出?
- html - CSS 背景图像不会显示在 HTML 文件中
- github - Jenkins Multibranch-Pipeline JobDSL 无法指定 github url
- typescript - ts-morph - 如何插入到主类中的现有构造函数模板中
- python - 可以使用 def 销毁对象吗?
- python - 有没有办法通过将多维 numpy 数组与另一个 numpy 数组匹配来找到它的索引?
- git-lfs - 尝试使用 git-lfs-migrate 推送大文件,我需要一些帮助