SQL 映射到两个表之间的新值

发布于 2024-10-01 01:18:30 字数 445 浏览 0 评论 0原文

当尝试在 SQL 2008 环境中将 TableA 的值复制到 TableB 时,我尝试有条件地将某些值映射到新的类型和值。

例如,TableA 具有列 Letters varchar(1) 并存储字母表中的字母,我想将这些值移至 TableB 列 Numbers int 中。

INSERT INTO TableB( SomeColumn1, Numbers, SomeColumn2 )
SELECT SomeColumn1, 
       LetterToNumber = 
       CASE Letters
              WHEN 'A' THEN 1
              ...
              WHEN 'Z' THEN 26
       END,
       SomeColumn2
FROM TableA

这是这样做的正确方法吗?

When trying to copy the values of TableA to TableB in SQL 2008 environment, I'm trying to conditionally map some values to a new type and value.

For example, TableA has column Letters varchar(1) and stores letters of the alphabet, and I want to move these values to TableB in column Numbers int.

INSERT INTO TableB( SomeColumn1, Numbers, SomeColumn2 )
SELECT SomeColumn1, 
       LetterToNumber = 
       CASE Letters
              WHEN 'A' THEN 1
              ...
              WHEN 'Z' THEN 26
       END,
       SomeColumn2
FROM TableA

Is this the right way to go about doing this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

如歌彻婉言 2024-10-08 01:18:30
INSERT INTO TableB( SomeColumn1, Numbers, SomeColumn2 )
SELECT SomeColumn1, 
       ASCII(UPPER(Letters)) - 64, --Uppercase A is 65 decimal, 41 hex
       SomeColumn2
FROM TableA
INSERT INTO TableB( SomeColumn1, Numbers, SomeColumn2 )
SELECT SomeColumn1, 
       ASCII(UPPER(Letters)) - 64, --Uppercase A is 65 decimal, 41 hex
       SomeColumn2
FROM TableA
救赎№ 2024-10-08 01:18:30

要么使用 char 到 ascii 值转换函数...

Select SomeColumn1, select ascii(Letters) - 64, SomeColumn2

这假设您的字母全部大写。您还可以

Select SomeColumn1, select ascii(ucase(Letters)) - 64, SomeColumn2

这样做,在生成整数之前将小写值转换为大写...

Either that or use a char to ascii value conversion function...

Select SomeColumn1, select ascii(Letters) - 64, SomeColumn2

That presumes that your letters are all caps. You can also do

Select SomeColumn1, select ascii(ucase(Letters)) - 64, SomeColumn2

That will convert lower case values to upper case before generating the integer...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文