SQL2005或以上才可以:
10年積累的成都做網(wǎng)站、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有黃島免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
Declare
@t
Table
(
ID
int,
FName
varchar(20),
CName
varchar(20),
CAge
varchar(20)
)
Insert
Into
@t
select
1,'吳亮','吳1','3歲'
Union
select
1,'吳亮','吳2','5歲'
Union
select
1,'吳亮','吳3','9歲'
Union
select
4,'麥大偉','麥1','3歲'
Union
select
4,'麥大偉','麥2','5歲'
Union
select
6,'張思','張1','3歲'
下面是合并:
Select
ID,FName,CName=Stuff((Select
','+CName
From
@t
Where
ID=T.ID
For
xml
path('')),1,1,''),
CAge=Stuff((Select
','+CAge
From
@t
Where
ID=T.ID
For
xml
path('')),1,1,'')
From
@t
T
Group
by
id,FName
如果是不同字段但是同一類型的拼接可以直接用加號(hào):
例如 表test里面有 A、B兩個(gè)字段,
select A + B as C from test;
1、語句如下:
select 字段A, 字段B, 字段A + 字段B as 字段C? From 表1
注:字段A加上字段B的計(jì)算列命名為字段C
2、計(jì)算列
計(jì)算列由可以使用同一表中的其他列的表達(dá)式計(jì)算得來。表達(dá)式可以是非計(jì)算列的列名、常量、函數(shù),也可以是用一個(gè)或多個(gè)運(yùn)算符連接的上述元素的任意組合。表達(dá)式不能為子查詢。
原題的答案就是“計(jì)算列”。
擴(kuò)展資料:
計(jì)算列應(yīng)用范圍
計(jì)算列可用于選擇列表、WHERE 子句、ORDER BY 子句或任何可使用正則表達(dá)式的其他位置,但下列情況除外:
用作 CHECK、FOREIGN KEY 或 NOT NULL 約束的計(jì)算列必須標(biāo)記為 PERSISTED。如果計(jì)算列的值由具有確定性的表達(dá)式定義,并且索引列中允許使用計(jì)算結(jié)果的數(shù)據(jù)類型,則可將該列用作索引中的鍵列,或者用作 PRIMARY KEY 或 UNIQUE 約束的一部分。
例如,如果表中含有整數(shù)列?a?和?b,則可以對計(jì)算列?a?+?b?創(chuàng)建索引,但不能對計(jì)算列?a?+ DATEPART(dd,?GETDATE()) 創(chuàng)建索引,因?yàn)樵诤罄m(xù)調(diào)用中,其值可能發(fā)生改變。
計(jì)算列不能作為 INSERT 或 UPDATE 語句的目標(biāo)。
數(shù)據(jù)庫引擎基于使用的表達(dá)式自動(dòng)確定計(jì)算列的為 Null 性。即使只有非空列,大多數(shù)表達(dá)式的結(jié)果也“認(rèn)為”可為空值,因?yàn)橄乱缁蛞绯錾傻慕Y(jié)果也可能為空。使用帶?AllowsNull?屬性的 COLUMNPROPERTY 函數(shù)可查明表中任何計(jì)算列的為 Null 性。
通過指定 ISNULL (check_expression,?constant) 可以將可為空值的表達(dá)式轉(zhuǎn)換為不可為空值的表達(dá)式,其中,?constant?是可替換所有空結(jié)果的非空值。
參考資料:
百度百科.計(jì)算列
不同的數(shù)據(jù)庫,相應(yīng)的字符串拼接方式不同,通過對比加深一下記憶。
一、MySQL字符串拼接
1、CONCAT函數(shù)
語法格式:CONCAT(char c1, char c2, ..., char cn) ,其中char代表字符串,定長與不定長均可以
連接兩個(gè)字符串
連接多個(gè)字符串
2、"+"操作符
連接兩個(gè)字符串
連接多個(gè)字符串
3、假如其中一個(gè)字段為NULL,則用結(jié)果用空格代替NULL。
二、Oracle字符串拼接
1、CONCAT函數(shù)
語法格式:CONCAT(char c1, char c2) ,其中char代表字符串,定長與不定長均可以
連接兩個(gè)字符串
連接多個(gè)字符串
使用CONCAT函數(shù)的嵌套實(shí)現(xiàn)。
2、"||"操作符
連接兩個(gè)字符串
連接多個(gè)字符串
3、假如其中一個(gè)字段為NULL,則用結(jié)果用空格代替NULL。
擴(kuò)展資料
字符串函數(shù)(String processing function)也叫字符串處理函數(shù),指的是編程語言中用來進(jìn)行字符串處理的函數(shù),如C,pascal,Visual以及LotusScript中進(jìn)行字符串拷貝,計(jì)算長度,字符查找等的函數(shù)。
字符串主要用于編程,概念說明、函數(shù)解釋、用法詳述見正文,這里補(bǔ)充一點(diǎn):字符串在存儲(chǔ)上類似字符數(shù)組,所以它每一位的單個(gè)元素都是可以提取的,如s=“abcdefghij”,則s[1]=“a”,s[10]="j"。
而字符串的零位正是它的長度,如s[0]=10(※上述功能Ansistring沒有。),這可以給我們提供很多方便,如高精度運(yùn)算時(shí)每一位都可以轉(zhuǎn)化為數(shù)字存入數(shù)組。
字符串函數(shù)的應(yīng)用
1、連接運(yùn)算 concat(s1,s2,s3…sn) 相當(dāng)于s1+s2+s3+…+sn.
例:concat(‘11’,'aa’)='11aa’;
2、求子串。 Copy(s,I,I) 從字符串s中截取第I個(gè)字符開始后的長度為l的子串。
例:copy(‘a(chǎn)bdag’,2,3)=’bda’
3、刪除子串。過程 Delete(s,I,l) 從字符串s中刪除第I個(gè)字符開始后的長度為l的子串。
例:s:=’abcde’;delete(s,2,3);結(jié)果s:=’ae’
4、插入子串。 過程Insert(s1,s2,I) 把s1插入到s2的第I個(gè)位置
例:s:=abc;insert(‘12’,s,2);結(jié)果s:=’a12bc’
5、求字符串長度 length(s) 例:length(‘12abc’)=5
在ASP中 求字符串長度用 len(s)例: len("abc12")=5
6、搜索子串的位置 pos(s1,s2) 如果s1是s2的子串 ,則返回s1的第一個(gè)字符在s2中的位置,若不是子串,則返回0.
例:pos(‘a(chǎn)b’,’12abcd’)=3
7、字符的大寫轉(zhuǎn)換。Upcase(ch) 求字符ch的大寫體。
例:upcase(‘a(chǎn)’)=’A’
8、數(shù)值轉(zhuǎn)換為數(shù)串。 過程 Str(x,s) 把數(shù)值x化為數(shù)串s.
例:str(12345,s); 結(jié)果s=’12345’
9、數(shù)串轉(zhuǎn)換為數(shù)值。 過程val(s,x,I) 把數(shù)串s轉(zhuǎn)化為數(shù)值x,如果成功則I=0,不成功則I為無效字符的序數(shù),第三個(gè)參數(shù)也可不傳
例:val(‘1234’,x,I);結(jié)果 x:=1234
參考資料:百度百科?字符串函數(shù)的應(yīng)用
Select B.人員ID,B.人員名稱,Left(TempInfo,LEN(TempInfo) - 1) AS 新字段 From
(Select 人員ID,人員名稱,(Select 人員的兒女 + '-' + 兒女歲數(shù) +',' From 人員 Where 人員ID = A.人員ID For XML Path('')) AS TempInfo
From 人員 A
Group By 人員ID,人員名稱) B
這個(gè)就是你要的。