[英]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.