【问题标题】:SQL replace valueSQL 替换值
【发布时间】:2012-11-29 12:05:52
【问题描述】:

我有一些关于客户语言偏好的数据存储在一个表中,但它存储为一个整数,其中 8 = 英语和 9 = 法语等。我认为这样做的原因是整数是另一个表中链接的键它们到描述它们的字符串。

不幸的是,我只能访问第一个表,而不能访问另一个表,否则执行 JOIN 很简单,因此是否可以编写一个 SELECT 查询,将 8 映射到英语,9 映射到法语等等?

我在想象这样的事情..

SELECT clientName, FUNCTION(languagePreference, ((8, "English"), (9, "French"))) 
FROM table

所以不是这个..

clientName languagePreference

Dave          8    
Emmanuelle    9    
Luc           9    
John          8

我明白了……

clientName languagePreference

Dave         English
Emmanuelle   French
Luc          French
John         English

【问题讨论】:

  • 还有谁知道如何在 StackOverflow 帖子中表示表格数据?
  • 确实有一些选项可以进行如上所述的内联转换,但它可能是特定于服务器的。您使用的是什么 DBMS?
  • 这种特殊情况需要在 SQL Server 2008 上使用 TSQL,但了解如何在 MySQL 中执行此操作也很有用
  • 重新表格数据:最常见的方法是在代码块中对其进行格式化并使用空格使所有内容对齐,因为代码格式化对所有字符使用固定宽度。

标签: sql replace


【解决方案1】:

使用 TSQL,使用 CASE

SELECT clientName, 
       CASE WHEN (languagePreference=8) THEN 
               'English' 
       ELSE 
            CASE WHEN (languagePreference=9) THEN
                'French'
            ELSE
                'Unknown'
            END
       END as languagePreference
FROM table

【讨论】:

  • 你可以把所有东西都放在single CASE中,不需要嵌套
  • 是的,刚刚看到,很高兴知道!这主要是我在 SO...learn 上互动的原因!
【解决方案2】:

TSQL:

SELECT clientName, 
  CASE languagePreference
       WHEN 8 THEN 'English'
       WHEN 9 THEN 'French'
       ... --Go on like this if you have more languagePreference keys
  END as languagePreference
FROM table

【讨论】:

    猜你喜欢
    • 2010-12-10
    • 2019-11-30
    • 2015-08-27
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多