Sql 如何在varchar中插入小数

Sql 如何在varchar中插入小数,sql,sql-server,Sql,Sql Server,我想知道如何在varchar列中插入十进制数 我需要根据代码的长度插入一个十进制数,即XXX.XX或XXX.X-- 如何编写sql语句来输入十进制数 比如说 1090 1091 1092 1093 应该是 109.0 109.1 109.2 109.3 V13.59 V13.61 V13.52 在同一列中有数据 23330 23331 23332 23339 应该是 233.30 233.31 223.32 233.39 在同一列中,有如下数据 V1359 V1361 V1362

我想知道如何在varchar列中插入十进制数

我需要根据代码的长度插入一个十进制数,即XXX.XX或XXX.X--

如何编写sql语句来输入十进制数

比如说

1090
1091
1092
1093
应该是

109.0
109.1
109.2
109.3
V13.59
V13.61
V13.52 
在同一列中有数据

23330
23331
23332
23339
应该是

233.30
233.31
223.32
233.39
在同一列中,有如下数据

V1359 
V1361 
V1362 
应该是

109.0
109.1
109.2
109.3
V13.59
V13.61
V13.52 
试试这个:

UPDATE  dbo.MyTable
SET     MyColumn = 
    CASE 
        WHEN MyColumn LIKE '[0-9][0-9][0-9][0-9]'
        THEN STUFF(MyColumn, 4, 0, '.')

        WHEN MyColumn LIKE '[0-9][0-9][0-9][0-9][0-9]'
        THEN STUFF(MyColumn, 4, 0, '.')

        WHEN MyColumn LIKE 'V[0-9][0-9][0-9][0-9]'
        THEN STUFF(MyColumn, 4, 0, '.')

        ELSE MyColumn
    END

为什么列是varchar???为什么列没有标准化?@mitch wheat,你说的标准化是什么意思?需要更正的是字母数字数据…这是什么db?Mssql?MySQL?我继承了这个,这就是他们带给我的方式。我只是想找到一种方法一次改变整个专栏,而不是一次一个。这真的是一个新概念——LOL。这是一个MssqlI,我非常了解规范化(或者我们在美国所说的规范化),但它不适用于这种情况。在过去10年里,我花了大量时间在医疗IT领域开发软件,我的眼睛经过训练,能够识别ICD9代码等东西;我相信,如果不了解ICD9,问题可能就不那么清楚了。我还认为有人提出了这个问题,因为它没有提到数据库管理系统。强烈建议您在询问SQL时始终包括这一点。如果op不必处理varchar字段,这将是一个很好的解决方案。有些ICD代码有前导字母字符,这不能解释(但在更多情况下可能会解释)。@drewlander,这正好解释了问题中给出的信息。如果你所说的是一项要求,那么这个问题应该以不清楚/缺乏信息来结束。@OGHaza,这根本不是一个有益或建设性的评论。我认为不值得结束一个问题,因为提交人没有提到ICD9也有“e”代码。他们仅使用V代码作为示例。他们说“在同一列中有类似的数据”,这意味着只有相似性,而不是所有代码都以V为前缀。事实上,OP甚至可能不知道E代码的存在,因为它们在大多数实践中并不常用。@drewlander我不建议我们投票关闭,因为OP没有说“这不起作用,它无法获取我的E代码“。我的意思是,没有必要指出这并不能直接满足从未要求过的要求。@OGHaza,我明白了,但这实际上非常重要,我认为我在说明这是一个好的解决方案时考虑得很周到,并指出这并不能解释所有ICD。不想破坏任何一天。