我在做乙個專案時研究了查詢多個關鍵字的技術,這是其中用到的乙個技術。「
分隔字串」
儲存過程的作用就是把「jiangjs,shenxy,cheng」類的字串隔開儲存到乙個表中。 create procedure [
分隔字串]
(@string nvarchar(1000), -- 要分隔的字串
@splitchar nvarchar(10) = ',', -- 分隔字元
@tablename nvarchar(50), -- 存入的表名稱
@fieldname nvarchar(50) = '[id]' -- 存入的欄位名稱
)as -- 將字串分隔開放進表中 declare @l int -- 第乙個分隔字元的位置
declare @s int -- 第二個分隔字元的位置
set @l = 0
set @s = charindex(@splitchar, @string, @l) while @l <= len(@string)
begin
declare @id nvarchar(50) if @s = 0 set @s = len(@string) + 1 -- 如果到最後乙個字串那麼第二個分隔字元的位置就是這個字串的長度加一
set @id = substring(@string, @l, @s - @l) -- 取值
set @l = @s + 1
set @s = charindex(@splitchar, @string, @l) if ltrim(rtrim(@id)) = '' continue -- 如果是空字串就跳過 declare @
sql nvarchar(1000)
set @
sql = 'insert into ' + @tablename + ' ('+ @fieldname +') values(''' + @id + ''')'
exec sp_execute
sql @
sqlend
go ----------notmsn messenger :
sql儲存過程中分隔字串
最近遇到了如下問題,要向使用者角色資訊表中插入資料。每個使用者有多個角色,因此每次新增使用者要新增一到多條記錄。這個過程要放到儲存過程中實現,但是儲存過程不能傳入集合。解決思路是,將角色id集合轉成用逗號分隔的字串,在儲存過程中分隔。那麼儲存過程中如何分隔字串呢?因為sql中沒有split函式,所以...
sql 字串分隔函式
declare str varchar max declare i int set str 123,456,789 set i charindex str print i print left str,i 1 分隔字串 例如 123,456,789 返回 例如 123 456 789 create ...
SQL 字串分隔函式
查詢某個 逗號分隔的字段 select from accinformation a where 啟用 in select from dbo.fnsplitstr ccaption,select from dbo.fnsplitstr 1,2,3 create function dbo fnsplit...