首页 > 解决方案 > 显示返回的查询值的格式化版本

问题描述

我正在尝试找出解决我在数据库中遇到的问题的最佳方法。我没有选择返回并更改架构的选项,因此我一直在努力寻找解决方法。

Table 1: 
User => Column MailingCountry = Either (en-Country(en-US), Country (US), or Null)
Table 3: 
SMSCode => Column CountryCode = en-Country (en-US), Column SMSCode = Code (1 for US).

我想知道是否有办法:

  1. 获取 User.MailingCountry 并检查其格式是否为 'en-US'、'US' 或 'NULL'
  2. 如果它在'en-US'我们很好,如果它在'US',我想在返回的结果中将它替换为'en-US',如果它是'NULL',我喜欢它默认为“en-US”。
  3. 与 SMS.CountryCode 进行内部联接,其中 User.MailingCountry = SMS.CountryCode,然后检索 SMSCode。

我想问题是,我不确定我该怎么做

Select m.MailingCountry, a.SMSCode FROM User m-> 
IF (m.MailingCountry = 'US' or m.MailingCountry is null) Then m.MailingCountry = 'en-US'
Inner Join SMSCode a on a.CountryCode = m.MailingCountry

标签: sqlsql-servertsql

解决方案


您可以进行以下查询:

SELECT SMS.SMSCode
FROM
(SELECT CASE WHEN MailingCountry like '%US%' OR MailingCountry IS NULL THEN 'en-US'
            ELSE MailingCountry END AS MailingCountry
FROM User) AS u
INNER JOIN SMSCode AS SMS
ON SMS.CountryCode = u.MailingCountry

推荐阅读