Sql server 2008 SQL映射到两个表之间的新值
在SQL 2008环境中尝试将TableA的值复制到TableB时,我尝试有条件地将一些值映射到新的类型和值 例如,TableA具有列字母varchar(1)并存储字母表中的字母,我想将这些值移动到列数字int中的TableBSql server 2008 SQL映射到两个表之间的新值,sql-server-2008,case,Sql Server 2008,Case,在SQL 2008环境中尝试将TableA的值复制到TableB时,我尝试有条件地将一些值映射到新的类型和值 例如,TableA具有列字母varchar(1)并存储字母表中的字母,我想将这些值移动到列数字int中的TableB INSERT INTO TableB( SomeColumn1, Numbers, SomeColumn2 ) SELECT SomeColumn1, LetterToNumber = CASE Letters
INSERT INTO TableB( SomeColumn1, Numbers, SomeColumn2 )
SELECT SomeColumn1,
LetterToNumber =
CASE Letters
WHEN 'A' THEN 1
...
WHEN 'Z' THEN 26
END,
SomeColumn2
FROM TableA
这是正确的方法吗?或者使用字符到ascii值转换函数
Select SomeColumn1, select ascii(Letters) - 64, SomeColumn2
假设你的信都是大写的。你也可以
Select SomeColumn1, select ascii(ucase(Letters)) - 64, SomeColumn2
这将在生成整数之前将小写值转换为大写 我不完全确定这条线上发生了什么。gbn使用UPPER而不是UCASE的更正是正确的。。。请原谅我的打字错误。
INSERT INTO TableB( SomeColumn1, Numbers, SomeColumn2 )
SELECT SomeColumn1,
ASCII(UPPER(Letters)) - 64, --Uppercase A is 65 decimal, 41 hex
SomeColumn2
FROM TableA