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",字元串);
注意第三個值一定要是字元串,