[英]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.