我在SQL Server中有一个表,其中有一列患者身高数据,存储为varchar
类型。
值以以下格式存储:
| <tab_name> |
| - -|
| 六十个|
| 5英尺|
| 65英寸|
| 5英尺10英寸|
| 4英尺5.25英寸|
也有坏数据的示例,如70,5英尺9英寸,但这远远不是标准,一些4英尺5英寸的示例,我已经使用初始查询将'替换为英尺,将“替换为英寸,以进行标准化。
我需要做的是将数据转换为数值格式,我的输出将有两列,一列用于实际数值,另一列用于单位。
我遇到的问题是,我收到以下错误:
将数据类型varchar转换为numeric时出错。
以下是我迄今为止所做的尝试,显然没有效果。
CASE
WHEN newvalue LIKE '%ft%in%'
THEN CONVERT(DECIMAL(10, 2), TRIM(LEFT(newvalue, PATINDEX('%f%', newvalue) - 1)))
WHEN newvalue LIKE '%ft%'
THEN CONVERT(DECIMAL(10, 2), TRIM(LEFT(newvalue, PATINDEX('%f%', newvalue) - 1)))
ELSE 0
END AS [ft value]
最终目标当然是做类似于[ft value]*12 + [in value]的事情,例如数据是以英尺和英寸为单位的。
感谢您的帮助!
1条答案
按热度按时间nqwrtyyt1#
只是一个选项(无需过多测试)
结果
性能更高,但风险更大