与SQL Server中的子字符串和解析混淆
我试图解析一个14个字符的与SQL Server中的子字符串和解析混淆,sql,sql-server,sql-server-2008,substring,Sql,Sql Server,Sql Server 2008,Substring,我试图解析一个14个字符的varchar(不一定是14个字符,有时是12、10或0)列,这样它就可以通过在第二个结果前面加一个小数来显示两部分的结果 EmployeeCode ResultCol1 ResultCol2 ----------------------------------------------- 42135430620000 421354306200 .00 42135431750000 421354317500 .01
varchar
(不一定是14个字符,有时是12、10或0)列,这样它就可以通过在第二个结果前面加一个小数来显示两部分的结果
EmployeeCode ResultCol1 ResultCol2
-----------------------------------------------
42135430620000 421354306200 .00
42135431750000 421354317500 .01
42135431740001 421354317400 .00
42135430923333 421354309233 .33
42135432370000 421354323700 .00
431354324200 4313543242 .00
42135432320000 421354323200 .00
42135432390000 421354323900 .00
42135430940000 421354309400 .00
421354324300 4213543243 .00
42135431980000 421354319800 .00
421354324400 4213543244 .00
42135432830000 421354328300 .00
421354323800 4213543238 .00
421354328500 4213543285 .00
421354328100 4213543281 .00
421354328400 4213543284 .00
421354328200 4213543282 .00
421354328600 4213543286 .00
421354330000 4213543300 .00
使用
左
和右
字符串函数
SELECT EmployeeCode,
LEFT(EmployeeCode, CASE
WHEN Len(EmployeeCode) = 0 THEN 1
ELSE Len(EmployeeCode) - 2
END) AS ResultCol1,
'.' + RIGHT(EmployeeCode, 2) AS ResultCol2
FROM yourtable
演示
DECLARE @EmployeeCode VARCHAR(50)='42135430620000'
SELECT @EmployeeCode as EmployeeCode,
LEFT(@EmployeeCode, CASE
WHEN Len(@EmployeeCode) = 0 THEN 1
ELSE Len(@EmployeeCode) - 2
END) AS ResultCol1,
'.' + RIGHT(@EmployeeCode, 2) AS ResultCol2
结果
EmployeeCode ResultCol1 ResultCol2
-------------- ------------ ----------
42135430620000 421354306200 .00
示例中的第二行和第三行正确吗?嗨,Simon,第二行和第三行是结果应该是怎样的。很抱歉,没有在前面详细说明。