繁体   English   中英

如何在 SQL 中创建 FUNCTION 以连接两个文本字符串?

[英]How to CREATE a FUNCTION in SQL to concatenate two strings of text?

我正在尝试创建一个连接两个文本字符串的 function。 我不能简单地使用 concat function,我必须创建一个 function,我可以输入两个文本字符串,例如 String 1 =“Hi my name is”和 String 2 =“Gary”

编者注:这是作业帮助。 对于未来的读者,这些答案可能不适用于给定的家庭作业指南之外。

编辑注意:在回顾原始问题时,它要求提供 function。 这可以做成 function,但我认为 function 对于相当简单的内置操作来说太过分了。 对于引擎已经可以轻松处理的事情,用户 function 将是很多开销。


在我个人看来,这是你的导师提出的一个有缺陷的问题。 正确的答案是做你不被允许做的事情。 事实上,在MySQL中,这几乎是引擎希望你完成这项任务的唯一方式。 但是,这是可以做到的。

<teachingMoment>

首先,我们将设置简单的数据。

CREATE TABLE t1 (s1 varchar(50), s2 varchar(50)) ;
INSERT INTO t1 (s1,s2) VALUES ('Hello','World') ;

按照我们应该做的方式去做:

SELECT concat(s1, ', ', s2, '!') FROM t1 ;

这给了我们: Hello, World! . 十分简单。

在 SQL 的大多数*其他风格中,双管道运算符 ( || ) 可用于连接。

*:“大多数”不包括 Microsoft T-SQL。 它使用+代替。

SELECT s1 || ',' || s2 || '!' FROM t1 ;

大多数时候给我们Hello, World! 再次。 但是,在 MySQL(或 MariaDB)中默认不启用使用管道 ( || ) 进行连接,这意味着我们必须使用concat() 要打开此功能,我们可以通过以下方式执行此操作:

SET sql_mode = 'PIPES_AS_CONCAT' ;
SELECT s1 || ',' || s2 || '!' FROM t1 ;

现在我们又回来给我们Hello, World! 没有concat()

</teachingMoment>

再一次,我认为这是一个非常人为的问题,除了如何让自己做一些 MySQL 聪明到可以阻止你做的事情之外,它并没有真正提供太多有用的学习。 但是,我想它在教您如何用其他语言(T-SQL 除外)进行操作时很有用。

祝你好运。

https://dbfiddle.uk/?rdbms=mysql_5.7&fiddle=325e5180aecbf5b632f960e777650a76

从评论来看,您似乎正在使用 MySQL 并且您可能在 function 下面使用 -

CREATE FUNCTION STR_ADD(STRING_1 VARCHAR2(50)
                        ,STRING_2 VARCHAR2(50))
RETURNS VARCHAR2
BEGIN
     DECLARE RES_STRING VARCHAR2(100);
     SELECT CONCAT(STRING_1, STRING_2) INTO RES_STRING;
     RETURN RES_STRING;
END;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM