我正在嘗試在 MySQL 中創建一個函式,該函式將根據欄位中特定字串的存在回傳一個值。我的 select 陳述句最終需要多次進行此評估,因此我想創建一個函式以提高效率。這是我的代碼:
create function [dbname].id_datasource
(descval varchar(100))
returns varchar(10)
begin
declare datasource varchar(10) default ''
select datasource =
case when descval like 'CLT%' or descval like '%CLT%' then 'CLT'
when descval like 'PCB%' or descval like '%PCB%' then 'PCB'
else 'NA' end
return (datasource)
end
我收到此錯誤:
SQL 錯誤 [1064] [42000]:您的 SQL 語法有錯誤;檢查與您的 MySQL 服務器版本相對應的手冊,以獲取正確的語法,以便在第 6 行的 'select datasource = case when descval like 'CLT%' 或 descval like '%CLT%' th' 附近使用
注意:它需要我為我的函式輸入一個資料庫名稱前綴——沒有它它會回傳“未選擇資料庫”——我確實用我的長資料庫名稱替換了上面的 [dbname]。
uj5u.com熱心網友回復:
你有語法問題:
- 缺少
;在每個陳述句的末尾。 - 用于
SET分配變數。
DELIMITER $$
create function [dbname].id_datasource (descval varchar(100))
returns varchar(10)
begin
declare datasource varchar(10) default '';
SET datasource =
case
when descval like '%CLT%' then 'CLT'
when descval like '%PCB%' then 'PCB'
else 'NA'
end;
return datasource;
end
$$
DELIMITER ;
沒有必要同時擁有LIKE 'CLT%'and LIKE '%CLT%',因為任何匹配的東西CLT%也會匹配%CLT%。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/418281.html
標籤:
下一篇:排序表和按兩列分組
