MySQL 中的 Create Function 语句有问题

Problem with Create Function statement in MySQL

我正在尝试在 MySQL 中创建一个函数,该函数将 return 一个基于字段中特定字符串的存在的值。我的 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 Error [1064] [42000]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select datasource = case when descval like 'CLT%' or descval like '%CLT%' th' at line 6

注意:它要求我为我的函数输入数据库名称前缀 - 它 returns 'no database selected' 没有它 - 我确实用我的长数据库名称替换了上面的 [dbname]。

你有语法问题:

  1. 每个语句末尾缺少 ;
  2. 使用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%'LIKE '%CLT%',因为匹配 CLT% 的任何内容也将匹配 %CLT%.