【问题标题】:SQL - How to use SUBSTRING function to output as Col NameSQL - 如何使用 SUBSTRING 函数输出为列名
【发布时间】:2020-12-06 09:38:32
【问题描述】:

是否可以在 SQL 中使用 SUBSTRING 函数将结果作为列名输出?

例子:

DECLARE @itemname VARCHAR(50) = 'HELLO WORLD'
SELECT SUBSTRING(@itemname, 1, 5) AS OUTPUT

输出为

OUTPUT
-----
HELLO

我想在这里实现的是 Col 名称应该改为 HELLO

DECLARE @itemname VARCHAR(50) = 'HELLO WORLD'

SELECT col1 AS SUBSTRING(@itemname, 1, 5)
FROM myTable

应该显示的内容

HELLO
------
Record 1
Record 2
Record 3
Record 4
.
.
.

【问题讨论】:

  • 不,您不能在 SELECT 语句中轻易做到这一点。您需要使用动态 SQL。

标签: mysql sql


【解决方案1】:

你需要动态 sql 来完成这个目的,因为你不能直接这样做

CREATE TABLE myTable(i int)
SET @itemname  := 'HELLO WORLD';

    SET @sql := CONCAT('SELECT COUNT(*) AS ', SUBSTRING(@itemname, 1, 5), ' FROM myTable');


    PREPARE stmt FROM @sql;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt; 
    
|你好 | | ----: | | 0 |

db小提琴here

【讨论】:

    【解决方案2】:

    您可以使用动态 SQL:

    DECLARE @itemname VARCHAR(50) = 'HELLO WORLD'
    SELECT CONCAT('SELECT col1 AS ', SUBSTRING(@itemname, 1, 5), ' FROM myTable');
    

    这个输出

    SELECT col1 AS HELLO FROM myTable
    

    现在,您可以复制粘贴该结果或EXECUTE

    这里有更多关于EXECUTE的使用信息:Is it possible to execute a string in MySQL?

    【讨论】:

    • 感谢您的努力,但我认为您误解了我在这里想要实现的目标。让我换个说法,我想为声明的项目使用 SUBSTRING 函数为列名命名。
    • 我完全理解你的问题,但它需要一个额外的步骤才能实现
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-22
    • 2021-07-24
    • 1970-01-01
    • 1970-01-01
    • 2018-09-30
    • 1970-01-01
    相关资源
    最近更新 更多