CONCAT函数
格式:SELECT CONCAT(str1,str2,...) FROM [表名];
将多个字段拼接为一个字段 (字符串 str1,str2 等多个字符串合并为一个字符串,多个字符串之间用逗号分隔)
可以有很多个参数,如果参数有一个是NULL,则结果返回NULL(使用CONCAT()函数对包含NULL的数据进行拼接时,结果为NULL,所以在对数据进行拼接之前,应该先检查要拼接的字段是否存在NULL)
适合场景: 1.组合多列信息为一列 2.对列的信息进行补充
-- 结果是MySQL
SELECT CONCAT('My', 'S', 'QL');
-- 结果是SQL Runoob Gooogle Facebook
SELECT CONCAT("SQL ", "Runoob ", "Gooogle ", "Facebook")
-- 结果是Null
SELECT CONCAT('My', NULL, 'QL');
-- 一个数字参数被变换为等价的字符串形式
-- 结果是143
SELECT CONCAT(14,3);
CONCAT_WS函数
格式:SELECT CONCAT_WS(‘拼接符’,str1,str2,...) FROM [表名];
同CONCAT(s1,s2,...) 函数,但是每个字符串之间要加上拼接符
适合场景:多字段拼接,字段间使用同样的拼接符(会自动跳过NULL)
-- 结果是data_frog_study
SELECT CONCAT_WS("_", "data", "frog", "study");
-- 结果是SQL-Tutorial-is-fun!
SELECT CONCAT_WS("-", "SQL", "Tutorial", "is", "fun!")AS ConcatenatedString;
案例
导入数据
DROP TABLE IF EXISTS `milk_tea`;
CREATE TABLE `milk_tea` (
`prod_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
`prod_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
`net_w` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
`pro_date` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
`valid_month` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
`in_price` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
`sale_price` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
INSERT INTO `milk_tea` VALUES ('1', '奶茶', '150g', '2018-09-11 00:00:00.000', '12', '10.8', '15');
INSERT INTO `milk_tea` VALUES ('2', '奶糖', '150g', '2019-05-13 00:00:00.000', '18', '12.3', '20');
INSERT INTO `milk_tea` VALUES ('3', '棒棒糖', '15g', '2019-04-29 00:00:00.000', '18', '2.1', '2.5');
INSERT INTO `milk_tea` VALUES ('4', '饼干', '200g', NULL, '12', '16.1', '23');
INSERT INTO `milk_tea` VALUES ('5', '薯片', '100g', '2018-08-27 00:00:00.000', '12', '9.3', '15');
INSERT INTO `milk_tea` VALUES ('6', '薯条', '100g', '2018-08-31 00:00:00.000', '12', '8.8', '15');
INSERT INTO `milk_tea` VALUES ('7', '火腿肠', '550g', '2019-02-04 00:00:00.000', '12', '15.5', NULL);
INSERT INTO `milk_tea` VALUES ('8', '方便面', '100g', '2018-12-09 00:00:00.000', '18', '3.6', '4');
milk_tea表

-- CONCAT函数
-- 例题1
SELECT m.*, CONCAT(m.prod_name,m.net_w)AS 产品信息
FROM milk_tea AS m;
-- 例题2
SELECT m.*, CONCAT(m.prod_name,' (',m.net_w,')')AS 产品信息
FROM milk_tea AS m;
-- 例题3
SELECT m.*, CONCAT(m.prod_name,'是',m.net_w,'是',m.sale_price)AS 产品信息
FROM milk_tea AS m;
例题1

例题2

例题3

-- CONCAT_WS函数
-- 例题1
SELECT m.*, CONCAT_WS('是',m.prod_name,m.net_w,m.sale_price)AS 产品信息
FROM milk_tea AS m;
-- 例题2
SELECT m.*, CONCAT_WS('+',m.prod_name,m.net_w,m.sale_price)AS 产品信息
FROM milk_tea AS m;
例题1

例题2

我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re
我正在尝试用ruby中的gsub函数替换字符串中的某些单词,但有时效果很好,在某些情况下会出现此错误?这种格式有什么问题吗NoMethodError(undefinedmethod`gsub!'fornil:NilClass):模型.rbclassTest"replacethisID1",WAY=>"replacethisID2andID3",DELTA=>"replacethisID4"}end另一个模型.rbclassCheck 最佳答案 啊,我找到了!gsub!是一个非常奇怪的方法。首先,它替换了字符串,所以它实际上修改了
我有一些代码在几个不同的位置之一运行:作为具有调试输出的命令行工具,作为不接受任何输出的更大程序的一部分,以及在Rails环境中。有时我需要根据代码的位置对代码进行细微的更改,我意识到以下样式似乎可行:print"Testingnestedfunctionsdefined\n"CLI=trueifCLIdeftest_printprint"CommandLineVersion\n"endelsedeftest_printprint"ReleaseVersion\n"endendtest_print()这导致:TestingnestedfunctionsdefinedCommandLin
如何在Ruby中按名称传递函数?(我使用Ruby才几个小时,所以我还在想办法。)nums=[1,2,3,4]#Thisworks,butismoreverbosethanI'dlikenums.eachdo|i|putsiend#InJS,Icouldjustdosomethinglike:#nums.forEach(console.log)#InF#,itwouldbesomethinglike:#List.iternums(printf"%A")#InRuby,IwishIcoulddosomethinglike:nums.eachputs在Ruby中能不能做到类似的简洁?我可以只
文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co
说在前面这部分我本来是合为一篇来写的,因为目的是一样的,都是通过独立按键来控制LED闪灭本质上是起到开关的作用,即调用函数和中断函数。但是写一篇太累了,我还是决定分为两篇写,这篇是调用函数篇。在本篇中你主要看到这些东西!!!1.调用函数的方法(主要讲语法和格式)2.独立按键如何控制LED亮灭3.程序中的一些细节(软件消抖等)1.调用函数的方法思路还是比较清晰地,就是通过按下按键来控制LED闪灭,即每按下一次,LED取反一次。重要的是,把按键与LED联系在一起。我打算用K1来作为开关,看了一下开发板原理图,K1连接的是单片机的P31口,当按下K1时,P31是与GND相连的,也就是说,当我按下去时
我需要一个通过输入字符串进行计算的方法,像这样function="(a/b)*100"a=25b=50function.something>>50有什么方法吗? 最佳答案 您可以使用instance_eval:function="(a/b)*100"a=25.0b=50instance_evalfunction#=>50.0请注意,使用eval本质上是不安全的,尤其是当您使用外部输入时,因为它可能包含注入(inject)的恶意代码。另请注意,a设置为25.0而不是25,因为如果它是整数a/b将导致0(整数)。
我看到其他人也遇到过类似的问题,但没有一个解决方案对我有用。0.3.14gem与其他gem文件一起存在。我已经完全按照此处指示完成了所有操作:https://github.com/brianmario/mysql2.我仍然得到以下信息。我不知道为什么安装程序指示它找不到include目录,因为我已经检查过它存在。thread.h文件存在,但不在ruby目录中。相反,它在这里:C:\RailsInstaller\DevKit\lib\perl5\5.8\msys\CORE\我正在运行Windows7并尝试在Aptana3中构建我的Rails项目。我的Ruby是1.9.3。$gemin
我需要从json记录中获取一些值并像下面这样提取curr_json_doc['title']['genre'].map{|s|s['name']}.join(',')但对于某些记录,curr_json_doc['title']['genre']可以为空。所以我想对map和join()使用try函数。我试过如下curr_json_doc['title']['genre'].try(:map,{|s|s['name']}).try(:join,(','))但是没用。 最佳答案 你没有正确传递block。block被传递给参数括号外的方法
在这段Ruby代码中:ModuleMClassC当我尝试运行时出现“'M:Module'的未定义方法'helper'”错误c=M::C.new("world")c.work但直接从另一个类调用M::helper("world")工作正常。类不能调用在定义它们的同一模块中定义的模块函数吗?除了将类移出模块外,还有其他解决方法吗? 最佳答案 为了调用M::helper,你需要将它定义为defself.helper;结束为了进行比较,请查看以下修改后的代码段中的helper和helper2moduleMclassC