Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MySQL Creating a Function with conditional

Tags:

mysql

I am trying to create a mysql function with a condition that I certain word must be in the parameter for it to work

CREATE FUNCTION hello (s CHAR(20)) RETURNS CHAR(50) 
DETERMINISTIC 
IF s = NULL 
THEN RETURN CONCAT('Hello World!')

So if the query is

SELECT hello(NULL);

Then it should output:

+--------------------+
| hello(NULL)        |
+--------------------+
| Hello Hello World! |
+--------------------+

Otherwise there shouldn't be any rows returned

When I try to do my code above, it always return a syntax error. The thing is I 'm not really good at creating mysql functions especially if there are conditionals

PS

I tried this code but I got the following error

mysql> CREATE FUNCTION hello (s CHAR(20)) RETURNS CHAR(50) 
    -> DETERMINISTIC 
    -> IF s IS NULL 
    -> THEN RETURN CONCAT('Hello World!');
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 '' at line 4
like image 512
Dean Christian Armada Avatar asked Sep 23 '26 10:09

Dean Christian Armada


2 Answers

Your function has several syntax errors:

 DELIMITER &&

 CREATE FUNCTION hello (s CHAR(20)) RETURNS CHAR(50) 
 DETERMINISTIC 
 BEGIN
     IF s IS NULL THEN
         RETURN CONCAT('Hello World!');
     END IF;
 END&&

 DELIMITER ;
  • Try to define a delimiter
  • Use begin, end in function body
  • You need end if for if clause
  • = null should be is null
like image 184
Blank Avatar answered Sep 26 '26 07:09

Blank


You need to use IS NULL or IS NOT NULL, not the equal sign. So change your query to:

IF s IS NULL 
THEN RETURN CONCAT('Hello World!')

Please check the answer in this stackoverflow question which explains this topic.

like image 41
KaeL Avatar answered Sep 26 '26 05:09

KaeL



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!