sqlgroupconcat
⑴ 在sql clr 项目中,如何实现多行字符串
利用函数:group_concat(),实现一个ID对应多个名称时,原本为多行数据,把名称合并成一行。
其完整语法:
GROUP_CONCAT(expr)
该函数返回带有来自一个组的连接的非NULL值的字符串结果。其完整的语法如下所示:
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
mysql> SELECT student_name,
-> GROUP_CONCAT(test_score)
-> FROM student
-> GROUP BY student_name;
Or:
mysql> SELECT student_name,
-> GROUP_CONCAT(DISTINCT test_score
-> ORDER BY test_score DESC SEPARATOR ' ')
-> FROM student
-> GROUP BY student_name;
在MySQL中,你可以获取表达式组合的连接值。你可以使用DISTINCT删去重复值。假若你希望多结果值进行排序,则应该使用 ORDER BY子句。若要按相反顺序排列,将 DESC (递减) 关键词添加到你要用ORDER BY 子句进行排序的列名称中。默认顺序为升序;可使用ASC将其明确指定。 SEPARATOR 后面跟随应该被插入结果的值中间的字符串值。默认为逗号 (‘,')。通过指定SEPARATOR '' ,你可以删除所有分隔符。
使用group_concat_max_len系统变量,你可以设置允许的最大长度。 程序中进行这项操作的语法如下,其中 val 是一个无符号整数:
SET [SESSION | GLOBAL] group_concat_max_len = val;
⑵ sql server 怎么实现mysql中group
mysql中有group_concat()可以合并多行内容
select AID,ANAME,(
select group_concat(VALUE) from B where B.AID=A.AID
) as AVALUE from A;
⑶ sql 一个表中字段存多个数字,对应到另一个表中的值,怎么得到另个表对应的值。
CREATETABLEt1(
Textvarchar(10)
);
INSERTINTOt1VALUES('1,2');
CREATETABLEt2(
idINT,
Valuevarchar(2)
);
INSERTINTOt2VALUES(1,'A');
INSERTINTOt2VALUES(2,'B');
SELECT
GROUP_CONCAT(t2.Value)
FROM
t2,t1
WHERE
INSTR(CONCAT(',',t1.Text,','),CONCAT(',',CAST(t2.idaschar),','))>0;
+------------------------+
|GROUP_CONCAT(t2.Value)|
+------------------------+
|A,B|
+------------------------+
1rowinset(0.00sec)
MySQL 下测试通过。
⑷ sql语句 怎么把查询的多条结果用,号拼接起来,不用函数就用SQL语句
-- 单列拼接,先查出一行,再加上逗号,接着拼接 查出的下一行
select group_concat(E.SUPPORT)
from ENGINES E
where E.XA IN('YES','NO')
--结果如下:YES,YES,YES,YES,YES,YES,DEFAULT,YES
-- 将查询的结果中的 "," 号,替换成 "**" 号
select REPLACE(group_concat(E.SUPPORT),',','**')
from ENGINES E
where E.XA IN('YES','NO')
--结果如下:YES**YES**YES**YES**YES**YES**DEFAULT**YES
-- 将查询的结果中 重复 的记录 去掉,只剩一条记录,然后再拼接
select group_concat(DISTINCT(E.SUPPORT))
from ENGINES E
where E.XA IN('YES','NO')
--结果如下:YES,DEFAULT
-- 多列拼接,同一行的先拼接,再加上逗号,接着拼接下一行
select group_concat(E.ENGINE,E.SUPPORT)
from ENGINES E
where E.XA IN('YES','NO')
--结果如下:MRG_MYISAMYES,MyISAMYES,BLACKHOLEYES,CSVYES,MEMORYYES,ARCHIVEYES,InnoDBDEFAULT,PERFORMANCE_SCHEMAYES
⑸ 1、sql查询语句时怎么把几个字段拼接成一个字段这几个字段是整型的。
1、语句如下:
select 字段A, 字段B, 字段A + 字段B as 字段C From 表1
注:字段A加上字段B的计算列命名为字段C
2、计算列
计算列由可以使用同一表中的其他列的表达式计算得来。表达式可以是非计算列的列名、常量、函数,也可以是用一个或多个运算符连接的上述元素的任意组合。表达式不能为子查询。
原题的答案就是“计算列”。
(5)sqlgroupconcat扩展阅读:
计算列应用范围
计算列可用于选择列表、WHERE 子句、ORDER BY 子句或任何可使用正则表达式的其他位置,但下列情况除外:
用作 CHECK、FOREIGN KEY 或 NOT NULL 约束的计算列必须标记为 PERSISTED。如果计算列的值由具有确定性的表达式定义,并且索引列中允许使用计算结果的数据类型,则可将该列用作索引中的键列,或者用作 PRIMARY KEY 或 UNIQUE 约束的一部分。
例如,如果表中含有整数列a和b,则可以对计算列a+b创建索引,但不能对计算列a+ DATEPART(dd,GETDATE()) 创建索引,因为在后续调用中,其值可能发生改变。
计算列不能作为 INSERT 或 UPDATE 语句的目标。
数据库引擎基于使用的表达式自动确定计算列的为 Null 性。即使只有非空列,大多数表达式的结果也“认为”可为空值,因为下溢或溢出生成的结果也可能为空。使用带AllowsNull属性的 COLUMNPROPERTY 函数可查明表中任何计算列的为 Null 性。
通过指定 ISNULL (check_expression,constant) 可以将可为空值的表达式转换为不可为空值的表达式,其中,constant是可替换所有空结果的非空值。
网络.计算列
⑹ sql语句怎么实现把多条不同记录当做一条记录
我 学的是 MySQL ;
里面有一条命令:group_concat();
作用是把多条字符串 归为一个分组。
例如:
SELECT 姓名,GROUP_CONCAT(图书 ORDER BY 图书 SEPARATOR ',' )
注:SEPARATOR 是指定多条图书记录中的分隔符;
FROM 购书表
WHERE 姓名=‘张三'
查询结果就是:
姓名 图书
----------------------------------------
张三 图书1,图书2,图书3,....
⑺ sql合并多个时间段
如果是oracle 我会使用一个临时表,包含人员,持续开始时间,持续结束时间,处理任务,处理方法如下
首先取出某员工一天的所有工作记录,按开始时间排序后逐条处理
首先将第一条记录插入到临时表中,持续开始时间为 开始时间,持续结束时间为结束时间,处理任务为1;
在取到后续记录时,作如下处理
如果开始时间 > 临时表中已经存在的所有结束时间,则新增一条记录,与第一条处理方式一致;
如果开始时间 <=临时表中已经存在的某一结束时间处理如下
如果 结束时间 <=临时表中已经存在的某一结束时间,不作任何插入和更新;
如果 结束时间 >临时表中已经存在的某一结束时间,更新临时表中对应记录为当前取到的结束时间;
按照以上规则直至所有数据均处理完成,此时临时表中获得的是不重叠的所有工作时间,采用group 即可获得一天是实际工作时间,进而可以求出休息时间。
⑻ Sql语句如何将多行数据组成一个字符串 --------------------
在mysql中有group_concat()函数可以做到:
select age,group_concat(userName) from table group by age;
执行的结果些微差别:
1 name1,name2,name3
2 name4,name5
就是有逗号分割,如果非要去掉逗号,可以使用replace(group_concat(userName),',','');
⑼ mysql中的concat用法!
这个sql语句是指从数据库表里面拼接组合goods_sn,goods_title,goods_brief,goods_name 有包含tablet字段的数据。等价于goods_sn||goods_title||goods_brief||goods_name LIKE '%tablet%。
concat 等同于字符串连接符 ||,concat(字串1, 字串2, 字串3, ...),将字串1、字串2、字串3,等字串连在一起。
(9)sqlgroupconcat扩展阅读:
MySQL,Oracle,SQL Server拼接字符串查询示例:
例子1:
MySQL:
SELECT CONCAT(region_name,store_name) FROM Geography WHERE store_name = 'Boston';
例子2:
Oracle:
SELECT region_name || ' ' || store_name FROM Geography WHERE store_name = 'Boston';
例子3:
SQL Server:
SELECT region_name + ' ' + store_name FROM Geography WHERE store_name = 'Boston';
⑽ mysql用GROUP_CONCAT合并查询出现乱码求大神!!!
将查出来的数组进行编码 由于是数组所以要循环编码 使用iconv("gbk","utf-8",字符串);
注意第三个值一定要是字符串,