【问题标题】:how to get the required output?如何获得所需的输出?
【发布时间】:2013-10-16 06:59:03
【问题描述】:

编写一个从 Vendors 表中返回这些列的 SELECT 语句:

  • vendor_name 列
  • vendor_name 列全部大写
  • vendor_phone 列
  • 每个电话号码的最后四位数字

当你得到正确的工作时,将后面的列添加到结果集中。这更加困难,因为这些列需要在函数中使用函数。

  • 每个供应商名称中的第二个单词(如果有);否则,空白
  • vendor_phone 列,其中部分号码以点分隔,如 555.555.5555

这是我迄今为止尝试过的:

select vendor_name, UPPER(vendor_name) AS VENDOR_NAME_UPPER,
vendor_phone, SUBSTR(vendor_phone, 11, 4), 
Replace
(replace
(replace(vendor_phone, ') ', '.')
, '(', '')
, '-','.') AS vendor_phone_dot,
SUBSTR(vendor_name, (INSTR(vendor_name, ' ') + 1)) AS Second_Word
from vendors;

【问题讨论】:

  • 你为什么不在程序中操作这些东西而不是让查询变得复杂。
  • 你好。欢迎来到 SO。为了期待您的问题得到好的答案,您需要在尝试某些代码时让我们轻松理解您面临的问题。您是否对您发布的内容进行了任何研究?你的数据库结构是什么?假设您已经尝试过任何东西,到目前为止您尝试过什么?什么不起作用?
  • 我已重新格式化问题

标签: mysql sql


【解决方案1】:
SELECT vendor_name,
UPPER(vendor_name),
vendor_phone,
RIGHT(vendor_phone, 4),
REPLACE(REPLACE(REPLACE(RIGHT(vendor_phone, 13),')','.')," ",""),"-","."),
CASE vendor_name
    WHEN (LOCATE(' ', vendor_name) = 0) THEN (SUBSTRING_INDEX(SUBSTRING(vendor_name, LOCATE(' ', vendor_name) + 1),' ', 1))
    ELSE ''
END
FROM ap.vendors;

Murach 的 MySQL(第 3 版),第 9 章,练习 3

【讨论】:

    【解决方案2】:

    试试这个..

    SELECT vendor_name, CONVERT(VARCHAR(50), UPPER(vendor_name)),SUBSTRING(vendor_phone,  LEN(vendor_phone)-3 ,4) FROM Vendors 
    

    【讨论】:

      猜你喜欢
      • 2016-08-22
      • 1970-01-01
      • 2021-05-24
      • 1970-01-01
      • 1970-01-01
      • 2019-09-24
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      相关资源
      最近更新 更多