簡體   English   中英

有什么辦法可以給 SQL 中的函數指定一個名稱,以便以后引用?

[英]Is there any way to assign a name to a function in SQL which can be referenced later?

在SQL中練習sakila數據庫時,下面是我編寫的連接演員名字和姓氏的代碼。 現在我想為整個 concat 函數指定一個名稱,我可以用它來引用它下面的長度函數中的 concat 函數。

請幫忙解決這個問題。

SELECT
CONCAT(CONCAT(LEFT(first_name, 1),LOWER(SUBSTRING(first_name, 2))," ",CONCAT(LEFT(last_name, 1), LOWER(SUBSTRING(last_name, 2))))) Actor_Name,

LENGTH(CONCAT(CONCAT(LEFT(first_name, 1),LOWER(SUBSTRING(first_name, 2))," ",CONCAT(LEFT(last_name, 1), LOWER(SUBSTRING(last_name, 2)))))) Name_Length
FROM actor; 

使用派生表(即子查詢):

SELECT Actor_Name, length(Actor_Name) Name_Length
FROM
(
    SELECT
        CONCAT(CONCAT(LEFT(first_name, 1),LOWER(SUBSTRING(first_name, 2))," ",CONCAT(LEFT(last_name, 1), LOWER(SUBSTRING(last_name, 2))))) Actor_Name
    FROM actor
)

在 MySQL 5.x 上,您可以使用用戶定義的變量:

SELECT @actor_name := CONCAT(CONCAT(LEFT(first_name, 1),LOWER(SUBSTRING(first_name, 2))," ",CONCAT(LEFT(last_name, 1), LOWER(SUBSTRING(last_name, 2))))) Actor_Name,
       LENGTH(@actor_name) Name_Length
FROM actor; 

這種技術可能也適用於當前的 MySQL 版本,但它被定義為不推薦使用的技術,並將在下一個版本中刪除。

附注。 計算長度時不需要 UPPER/LOWER 函數。 我不知道在大小寫更改期間更改其長度的符號... LENGTH(first_name) + LENGTH(last_name) + 1 AS Name_Length就足夠了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM