SQL Server中如何处理含字符的数值列以执行数据质量校验?
解决SQL Server带单位列的数值比较问题
直接通过查询处理带单位的列,无需修改表结构,具体方案如下:
核心思路
先去除Building Height列的单位'm',转换为数值类型后,再应用数据质量规则筛选不符合的行。
具体查询语句
SELECT [Building Height], 楼层数列名 -- 替换为实际的楼层数列名称 FROM 你的表名 -- 替换为实际的表名称 WHERE -- 转换建筑高度为数值,同时处理可能的格式异常 TRY_CAST(REPLACE([Building Height], 'm', '') AS DECIMAL(10,1)) < 11 AND 楼层数列名 >= 5;
细节说明
- 使用
REPLACE([Building Height], 'm', '')直接移除字符串末尾的'm',适用于所有值都是'm'结尾的情况。 TRY_CAST相比CAST更安全:如果列中存在非标准格式的值(比如不带'm'、非数字内容),TRY_CAST会返回NULL,不会导致整个查询失败。如果需要过滤这些异常值,可以在WHERE条件中添加TRY_CAST(...) IS NOT NULL。- 替换语句中的
你的表名和楼层数列名为实际的表和列名称即可执行。
内容的提问来源于stack exchange,提问作者omi
相关产品推荐
相关产品推荐

