MySQL在函数中选择

jdb*_*org 4 mysql

我正在尝试编写一个带有select内部的MySQL函数,但总是得到一个NULL返回

CREATE FUNCTION test (i CHAR)
RETURNS CHAR
NOT DETERMINISTIC
BEGIN
DECLARE select_var CHAR;
SET select_var = (SELECT name FROM table WHERE id = i);
RETURN select_var;
END$$

mysql> SELECT test('1')$$
+-----------------+
|    test('1')    |
+-----------------+
| NULL            | 
+-----------------+
1 row in set, 1 warning (0.00 sec)

mysql> 
mysql> 
mysql> SHOW WARNINGS
    -> $$
+---------+------+----------------------------------------+
| Level   | Code | Message                                |
+---------+------+----------------------------------------+
| Warning | 1265 | Data truncated for column 'i' at row 1 | 
+---------+------+----------------------------------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

Edo*_*d B 8

它适用于此:

CREATE FUNCTION test (i CHAR)
 RETURNS VARCHAR(SIZE)
 NOT DETERMINISTIC
 BEGIN
  DECLARE select_var VARCHAR(SIZE);
  SET select_var = (SELECT name FROM table WHERE id = i);
  RETURN select_var;
 END$$
Run Code Online (Sandbox Code Playgroud)


Zoh*_*aib 3

尝试指定返回类型的大小char。例如,如果名称可以包含 20 个字符,则尝试

RETURNS CHAR(20)
Run Code Online (Sandbox Code Playgroud)