濮阳杆衣贸易有限公司

主頁 > 知識庫 > 將所有符合條件的結果拼接成一列并用逗號隔開的一個sql語句

將所有符合條件的結果拼接成一列并用逗號隔開的一個sql語句

熱門標簽:電銷外呼有錄音系統(tǒng)有哪些 外呼運營商線路收費 鎮(zhèn)江網(wǎng)路外呼系統(tǒng)供應商 申請400電話在哪辦理流程 貴州房產(chǎn)智能外呼系統(tǒng)供應商 小e電話機器人 百度地圖標注改顏色 臨沂智能電銷機器人加盟哪家好 一個導航軟件能用幾個地圖標注點
復制代碼 代碼如下:

create table tb(id int, value varchar(10))
insert into tb values(1, 'aa')
insert into tb values(1, 'bb')
insert into tb values(2, 'aaa')
insert into tb values(2, 'bbb')
insert into tb values(2, 'ccc')
go
create function [dbo].[f_str](@id int) returns nvarchar(1000)
as
begin
declare @str nvarchar(1000)
set @str = ''
select @str = @str + ',' + cast(value as nvarchar(900)) from tb where id = @id
set @str = right(@str , len(@str) - 1)
return @str
end
go
--調用函數(shù)
select id , value = dbo.f_str(id) from tb group by id

運行結果:

本來在上面的函數(shù)中所有的nvarchar都是varchar類型的,并且上面函數(shù)的紅色處在調用cast方法時,并未指定長度。朋友測試后發(fā)現(xiàn),結果會在30個字符 時截斷,原來以為是varchar和nvarchar的區(qū)別,我試著將varchar改成了nvarchar,朋友測試的結果是在54個字符處截斷。我查了下,是varchar的默認長度問題,見sql server聯(lián)機叢書中下面的說明:


char 和 varchar
固定長度 (char) 或可變長度 (varchar) 字符數(shù)據(jù)類型。

char[(n)]

長度為 n 個字節(jié)的固定長度且非 Unicode 的字符數(shù)據(jù)。n 必須是一個介于 1 和 8,000 之間的數(shù)值。存儲大小為 n 個字節(jié)。char 在 SQL-92 中的同義詞為 character。

varchar[(n)]

長度為 n 個字節(jié)的可變長度且非 Unicode 的字符數(shù)據(jù)。n 必須是一個介于 1 和 8,000 之間的數(shù)值。存儲大小為輸入數(shù)據(jù)的字節(jié)的實際長度,而不是 n 個字節(jié)。所輸入的數(shù)據(jù)字符長度可以為零。varchar 在 SQL-92 中的同義詞為 char varying 或 character varying。

注釋
如果沒有在數(shù)據(jù)定義或變量聲明語句中指定 n,則默認長度為 1。如果沒有使用 CAST 函數(shù)指定 n,則默認長度為 30。

將為使用 char 或 varchar 的對象被指派數(shù)據(jù)庫的默認排序規(guī)則,除非用 COLLATE 子句另外指派了特定的排序規(guī)則。該排序規(guī)則控制用于存儲字符數(shù)據(jù)的代碼頁。

支持多語言的站點應考慮使用 Unicode nchar 或 nvarchar 數(shù)據(jù)類型以盡量減少字符轉換問題。如果使用 char 或 varchar:

如果希望列中的數(shù)據(jù)值大小接近一致,請使用 char。


如果希望列中的數(shù)據(jù)值大小顯著不同,請使用 varchar。
如果執(zhí)行 CREATE TABLE 或 ALTER TABLE 時 SET ANSI_PADDING 為 OFF,則一個定義為 NULL 的 char 列將被作為 varchar 處理。

當排序規(guī)則代碼頁使用雙字節(jié)字符時,存儲大小仍然為 n 個字節(jié)。根據(jù)字符串的不同,n 個字節(jié)的存儲大小可能小于 n 個字符。
您可能感興趣的文章:
  • mssql數(shù)據(jù)庫游標批量修改符合條件記錄的方法
  • Mysql獲取id最大值、表的記錄總數(shù)等相關問題的方法匯總
  • SQL一條語句統(tǒng)計記錄總數(shù)及各狀態(tài)數(shù)
  • Java實現(xiàn)獲得MySQL數(shù)據(jù)庫中所有表的記錄總數(shù)可行方法
  • SQL查詢數(shù)據(jù)庫中符合條件的記錄的總數(shù)

標簽:晉城 保定 延邊 日照 三明 合肥 嘉興 澳門

巨人網(wǎng)絡通訊聲明:本文標題《將所有符合條件的結果拼接成一列并用逗號隔開的一個sql語句》,本文關鍵詞  將,所有,符合,條件,的,結果,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《將所有符合條件的結果拼接成一列并用逗號隔開的一個sql語句》相關的同類信息!
  • 本頁收集關于將所有符合條件的結果拼接成一列并用逗號隔開的一個sql語句的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    昌平区| 盐边县| 扶绥县| 龙川县| 安丘市| 淅川县| 湘西| 印江| 富民县| 嵊州市| 盘山县| 曲水县| 都江堰市| 三门峡市| 三河市| 汝城县| 安陆市| 凤城市| 遂川县| 枝江市| 清丰县| 永德县| 庄河市| 汉中市| 康乐县| 金昌市| 谢通门县| 托克逊县| 灯塔市| 本溪市| 阜新| 大邑县| 荔浦县| 通榆县| 镇雄县| 铜陵市| 镇安县| 临城县| 甘南县| 洛阳市| 丹凤县|