㈠ sql 以逗號為間隔截取字元
declare @sql varchar(5000),@totalLength int,@length int,@tag varchar(20),@currentNumber int
set @sql=',google,yahoo,my,db,sqlserver,helloworld,'
set @tag=','
set @totalLength=len(@sql)
set @length=charindex(@tag,@sql)
print '第1條記錄: '+left(@sql,@length-1)
set @sql=substring(@sql,@length+1,@totalLength)
set @currentNumber=1
while (@length>0)
begin
set @currentNumber=@currentNumber+1
set @length=charindex(@tag,@sql)
if(@length=0)
begin
break;
end
print '第'+ltrim(str(@currentNumber))+'條記錄:'+left(@sql,@length-1)
set @sql=substring(@sql,@length+1,@totalLength)
end
第1條記錄:
第2條記錄:google
第3條記錄:yahoo
第4條記錄:my
第5條記錄:db
第6條記錄:sqlserver
第7條記錄:helloworld
㈡ sql server中,怎樣查詢欄位把逗號分割的字元串拆分成多條數據
sql server中沒有這種函數,可以自建一個function去拆分,
給你個思路,
用charindex 或是instr等函數,在循環體中查找分隔符出現的位置和並記錄出現次數到變數,然後使用substring函數截取字元串,輸出
㈢ SQL 查詢的時候截取欄位在逗號前的部分
可以使用substring_index(column, ',', 2)方法來實現。
具體SQL語句為:
select id,name,substring_index(address, ',', 2) from people;
substring_index(address, ',', 2)的意思是截取第二個 ',' 之前的所有字元。
(3)sql以逗號截取字元串擴展閱讀
sql中substring()的相關用法介紹:
1、SUBSTRING(name,3) 截取name這個欄位 從第三個字元開始,之後的所有個字元
SELECT SUBSTRING('1234567',3)
結果:34567
2、SUBSTRING(name, -4) 截取name這個欄位的第 4 個字元位置(倒數)開始取,直到結束
SELECT SUBSTRING('1234567',-4)
結果:4567
3、SUBSTRING(name, -4,2) 截取name這個欄位的第 4 個字元位置(倒數)開始取,只截取之後的2個字元
SELECT SUBSTRING('1234567',-4,2)
結果:45
4、substring_index('www..com', '.', 2) 截取第二個 '.' 之前的所有字元
SELECT substring_index('www..com', '.', 2)
㈣ sql server里如何將一組用逗號分隔的字元串分解並插入到另一張表中,比如:11873,27827, 也可能是好多
1.得到這個字元串。如:111,222,333
2.得到帶","字元串的長度。如:11
3.用replace把","去掉,得到長度。如:9
4.到這步,我們就知道,這個字元串有2個逗號,也就是說,有3個有效數據。
5.用while,substring開始循環得到數據,然後插入到表中
如:
set count=0
while(coung<3)--我們已經知道就3個有效數據
begin
set value=substring()---截取到第一個」,「,得到第一個有效數據
執行insert語句。
end
㈤ sql欄位里有逗號隔開的數據,怎麼取值
sql欄位有逗號隔開,數據取值的方法。
如下參考:
1.查詢資料庫表的所有欄位,直接使用select語句,如下圖。
㈥ 簡單SQL語句,如何截取指定分隔符前字元串
一、用到的函數:substring(' ', , )、charindex(' ',' ')
select SUBSTRING('[email protected]',1,charindex('@','[email protected]')-1)
1.substring(字元串表達式,開始位置,長度):
從一個指定字元串的指定位置截取制定長度的字元;
第一個參數表示被截取的字元串;
第二個參數表示要在第一個參數中開始截取的位置;
第三個參數表示要截取的長度。
例如:select substring('abc123',1,2) →返回ab
從字元串『abc123』的第一個字元開始截取,共截取兩個字元,最後得到『ab』。
2.charindex(字元串表達式1,字元串表達式2[,整數表達式]):
在字元串2中查找字元串1,如果存在返回第一個匹配的位置,如果不存在返回0。如果字元串1和字元串2中有一個是null則返回null。
可以指定在字元串2中查找的起始位置。
例如:select charindex('ab','BCabTabD') → 返回3
select charindex('ab','BCabTabD',4) →返回6
二、用到的函數:left(' ', )、charindex(' ',' ')
select LEFT('[email protected]',charindex('@','[email protected]')-1)
1.left(字元串表達式,整數表達式):
從字元串表達式的最左邊開始截取整數表達式個字元。
例如:select left('abcdef',3) →返回abc
㈦ sql中怎麼把字元串根據逗號拆分
IF(OBJECT_ID('TA') IS NOT NULL) DROP TABLE TA
CREATE TABLE TA(id INT,[value] VARCHAR(100), class VARCHAR(10))
INSERT INTO TA(id,[value],class)
SELECT 1,'3,2,4,5','no' UNION ALL
SELECT 2,'5,1,1+2','yes'
--查詢結果
SELECT T.id
,SUBSTRING(T.[value],R.number,CHARINDEX(',',T.[value]+',',R.number)-R.number) AS value
,T.class
,ROW_NUMBER() OVER (PARTITION BY T.id ORDER BY T.id) AS code
FROM TA AS T
JOIN (
SELECT TOP 10 number FROM [master].dbo.spt_values
WHERE [type]='P' ORDER BY number)AS R ON (CHARINDEX(',',','+T.[value],R.number)=R.number)
㈧ sql字元串怎麼按逗號分割
[sql]
view
plainprint?
create
or
replace
function
f_intellect_first_sales_prov(var_sales
in
varchar2,
var_first_sales
in
varchar2,
var_split
in
varchar2)
return
varchar2
is
result
varchar2(1);
/****************************************************
**
[sql]
view
plainprint?
**
all
rights
reserved.
**
**
函數名稱:f_intellect_first_sales_province
**
參
數:【名稱】
【類型
】
【說明】
**
var_sales
varchar2
字元串1,逗號分隔的,如'aaa,bbb'
var_first_sales
varchar2
字元串2,逗號分割的,如'cc,aaa'
**
var_split
varchar2
要使用的分隔符
**
返
回
值:result
varchar2
處理後返回的值1/0
**
摘
要:如果字元串2中的某一個分割的字元串在字元串1中就返回1,否則返回0
**
**
當前版本:1.0
**
**
作
者:liuh
**
完成日期:2013年1月29日
**
備
註:
****************************************************/
var_element
varchar2(4000);
var_element2
varchar2(4000);
var_tmp
varchar2(4000);
var_tmp2
varchar2(4000);
begin
result
:=
'0';
var_tmp
:=
var_sales;
var_tmp2
:=
var_first_sales;
if
var_tmp2
is
null
or
var_tmp2
=''
then
return(result);
elsif
var_tmp
is
null
or
var_tmp
=''
then
return(result);
else
/*如果字元串1不為空,在後面加上一個特殊的字元,
這樣循環時就可以直接在循環內部處理,不然需要在最外面循環出再一次處理var_tmp,因為最後一次var_tmp中不含有分隔符,不會進行loop循環*/
var_tmp
:=
var_tmp
||
var_split
||
'-1';
end
if;
while
instr(var_tmp,
var_split)
>
0
loop
/****循環字元串1,每次獲得一個var_element****/
var_element
:=
substr(var_tmp,
1,
instr(var_tmp,
var_split)
-
1);
var_tmp
:=
substr(var_tmp,
instr(var_tmp,
var_split)
+
length(var_split),
length(var_tmp));
while
instr(var_tmp2,
var_split)
>
0
loop
/****循環字元串2,每次獲得一個var_element2****/
var_element2
:=
substr(var_tmp2,
1,
instr(var_tmp2,
var_split)
-
1);
var_tmp2
:=
substr(var_tmp2,
instr(var_tmp2,
var_split)
+
length(var_split),
length(var_tmp2));
/*如果字元串1中有字元串2中的一個值,返回1*/
if
var_element
=
var_element2
then
result
:=
'1';
return(result);
end
if;
end
loop;
/*最後一個截取的var_tmp2
不會進入循環
所以在此處處理
如果字元串1中含有字元串2的一個值,返回1*/
if
var_element
=
var_tmp2
then
result
:=
'1';
return(result);
end
if;
end
loop;
return(result);
end
f_intellect_first_sales_prov;
㈨ sql字元串怎麼按逗號分割
我沒看懂你的意思但是我有一樣個批量刪除的比如
/*
使用存儲過程實現如下功能,批量刪除實際選中的多個反饋活動。
*/
--包規范
create or replace package pak_activeinfo
as
procere sp_activeinfo
(
i_activeid varchar2
);
end pak_activeinfo;
--包主體
create or replace package body pak_activeinfo
as
procere sp_activeinfo
(
i_activeid varchar2
)
as
activeid1 varchar2(100);
activeid2 varchar2(100);
activeid3 varchar2(10000) := i_activeid;
a number;
b number;
begin
savepoint sp;--回滾點
select instr(activeid3,',') into a from al;
b := a-1;
for i in 1..floor(length(activeid3)/b) loop--改正
--獲取第一個編號
select substr(activeid3,1,b) into activeid1 from al;
--修改表
update activeinfo set status = 1 where activeid = activeid1;
--截取第一個編號
select ltrim(activeid3,activeid1) into activeid2 from al;
--去掉,號
select ltrim(activeid2,',') into activeid3 from al;
end loop;
commit;
exception
when no_data_found then
dbms_output.put_line('失敗!');
when others then
dbms_output.put_line('讀去失敗!原因是:'||sqlerrm);
rollback to savepoint sp;
end sp_activeinfo;
end pak_activeinfo;
--測試
begin
pak_activeinfo.sp_activeinfo('1000,1001,1002');
end;
能看懂嗎?
按長度用循環去掉逗號!
希望對你有幫助!
㈩ sql 如何以逗號為分隔符分割一個欄位的值
可用substring函數。
創建測試表及數據:
createtabletest
(idvarchar(10));
insertintotestvalues('123abc');
insertintotestvalues('456def');
insertintotestvalues('789ghi');
執行:
selectsubstring(id,1,3)+','+substring(id,4,3)asidfromtest
結果截圖:
也就顯示成了用逗號分隔的樣子。