在MySQL中不能使用select * from funcA()吗?

6rqinv9w  于 2023-08-02  发布在  Mysql
关注(0)|答案(2)|浏览(120)

SQL Server中定义表值函数后,select * from funcA()是可能的。
但在MySQL中,这似乎是不可能的。对吗?
如何在MySQL中实现?如果某个功能无法做到这一点,是否有类似的方法?我想拆分一个字符串并将其放入一个表中以创建所需的数据。

4bbkushb

4bbkushb1#

MySQL不支持表值函数。
1.您可以通过创建与下面类似的过程来实现这一点

IN str VARCHAR(255),
 OUT table_result TABLE(
   column_1 VARCHAR(255),
   column_2 VARCHAR(255)
 )
)
BEGIN
 DECLARE i INT DEFAULT 0;
 WHILE i < LENGTH(str) DO
   SET table_result.column_1 = SUBSTRING(str, i, 1);
   SET table_result.column_2 = SUBSTRING(str, i + 1, 1);
   SET i = i + 2;
 END WHILE;
END;

字符串
对于执行,您可以用途:

CALL split_string('Hello World', @table_result);


1.另一种方法是使用临时表:

DECLARE str VARCHAR(255) DEFAULT 'Hello World';
CREATE TEMPORARY TABLE table_result (
  column_1 VARCHAR(255),
  column_2 VARCHAR(255)
);
INSERT INTO table_result (column_1, column_2)
SELECT SUBSTRING(str, i, 1), SUBSTRING(str, i + 1, 1)
FROM
  (
    SELECT 1 AS i, 2 AS i
  ) AS t
WHERE
  i < LENGTH(str);


这将帮助您删除该表。

okxuctiv

okxuctiv2#

在MySQL中,这是不可能的,但您可以创建一个存储过程,将字符串拆分并将数据存储在tempTable中。然后从tempTable获取数据。

相关问题