㈠ sql 求帶分隔符字元串中,重復字元串的個數
CreatefunctionFn_ContantsStrCount--創建函數
(
@CurrStrvarchar(max),--現有字元串
@FindStrvarchar(50),--需要查找的字元串
@Charsvarchar(5)=null--字元串中包含的字元
)
returnsint
as
begin
declare@ResultCountint=0--計數
declare@Tempvarchar(max)=''
if(isnull(@Chars,'')='')
set@Chars=','
while(CHARINDEX(@Chars,@CurrStr)>0)
begin
set@Temp=REPLACE(SUBSTRING(@CurrStr,1,CHARINDEX(@Chars,@CurrStr)),@Chars,'')
set@CurrStr=SUBSTRING(@CurrStr,CHARINDEX(@Chars,@CurrStr)+1,LEN(@CurrStr))
if(@Temp=@FindStr)
set@ResultCount+=1
end
if(@CurrStr=@FindStr)
set@ResultCount+=1
return@ResultCount
end
go
selectdbo.Fn_ContantsStrCount('aaa:bbb:ccc:ddd:aaa:ccc:ddd:aaa','aaa',null)
selectdbo.Fn_ContantsStrCount('aaa:bbb:ccc:ddd:aaa:ccc:ddd:aaa','aaa',':')
你看看滿足你的要求不,函數,是可以放在查詢語句中執行的東東
㈡ sql怎麼查詢字元串中的重復
這個是學生作業還是具體的應用。
直接使用SQL語句是不行的,變通的方案有很多,要看你具體的應用目的,來選擇更高效的方案
㈢ 動態sql中怎麼綁定多個重復出現參數
目前我知道的綁定方式是按順序一個個對應著動態sql的佔位符,如
open cur_Record for L_sql using P_TestKey,P_SchoolKey,P_TestKey,P_TestKey,P_ClassKey
但我想問的是有沒有其他的綁定方法,如簡化成
open cur_Record for L_sql using P_TestKey,P_SchoolKey,P_ClassKey
這樣的話比較簡潔清晰
㈣ sql動態查詢佔位符查詢
sql語句,不帶條件
條件拼接變數1
if 有值
條件拼接變數 + and + 條件
如:
select 1 from a
條件拼接變數
有值 name = 'aaa'
拼sql
'select 1 from a ' + 'where ' + 條件拼接變數
最後用
exec(sql語句)
㈤ SQl 字元串重復問題
說個思路吧,你就寫個判斷條件,
select
*
from
tableName
where
(截取地址的後6個字元,匹配這條記錄的地址,若出現次數
=
2
)
具體函數忘了,,你查查,SQL
的
字元串處理函數
基本上可以查處所有的,(除非重復的字元長度小於6)
㈥ SQL 中怎麼查找一列中從重復出現的字元,急急急,在線等!!!
什麼資料庫?oracle的話像這樣:
--批量分割字元串
--構造輔助用整數表
createtableNums(nintprimarykey);
declare
mint;
begin
select1intomfromal;
insertintoNumsselect1fromal;
while(m<1000000/2)
loop
insertintoNumsselectm+nfromNums;
selectm*2intomfromal;
endloop;
insertintoNumsselectm+nfromNumswherem+n<=1000000;
end;
--測試數據
withtmp(gh,yph)as(
select1,'28,15,13,10,8,3,29,12,21,31,9,20,18,30'fromalunionall
select2,'4,19,6,24,16,11,22,25,27,5,26,14,23,1,17'fromalunionall
select3,'59,58,45,46,41,43,39,42,36,37,44,430,43,40'fromal)
--利用輔助整數表批量分割字元串
selectyph,count(*)from(
SELECTgh,
SUBSTR(yph,n,instr(yph||',',',',n)-n)ASyph
FROMtmp
JOINNums
ONn<=LENGTH(yph)
ANDSUBSTR(','||yph,n,1)=','
)t
whereyph='28'
groupbyyph;
㈦ 用SQL寫一個重復字元串一定次數的函數Repeat 。
CREATE function dbo.Repeat(@key as varchar(256),@number as int)
returns varchar(max)
as
begin
declare @char varchar(max)
set @char = ''
while (@number>0 )
begin
select @char = @char+@key
set @number = @number -1
end
return @char
end
㈧ 動態SQL中的重復佔位符如何與綁定變數進行
BEGIN calc_stats(:x, :x, :y, :x); END 是一個PL/SQL 代碼段,而非 insert into t6 (a,b,c) values (:x,:y,:x) 這樣的DML,標准SQL語句。
在EXECUTE IMMEDIATE 中,利用USING語句綁定變數時,Oracle遵循針對PL/SQL存儲過程使用佔位符名稱匹配的原則,而針對SQL語句則採用佔位符位置匹配的原則。
PL/SQL 用戶指南與參考 中的 例子如下:
動態SQL語句中的佔位符與USING子句中的綁定參數是位置關聯的,而不是名稱關聯。所以,如果在SQL語句中同樣的佔位符出現兩次或多次,那麼,它的每次出現都必須與一個USING子句中的綁定參數相關聯。例如下面的動態字元串:
sql_stmt := 'INSERT INTO payroll VALUES (:x, :x, :y, :x)';
我們可以為動態字元串編寫對應的USING子句:
EXECUTE IMMEDIATE sql_stmt USING a, a, b, a;
但 是,動態PL/SQL塊中只有唯一的佔位符才與USING子句中的綁定參數按位置對應。所以,如果一個佔位符在PL/SQL塊中出現兩次或多次,那麼所有 這樣相同的佔位符都只與USING語句中的一個綁定參數相對應。比如下面的例子,第一個佔位符(x)與第一個綁定參數(a)關聯,第二個佔位符(y)與第 二個綁定參數(b)關聯。
DECLARE
a NUMBER := 4;
b NUMBER := 7;
BEGIN
plsql_block := 'BEGIN calc_stats(:x, :x, :y, :x); END';
EXECUTE IMMEDIATE plsql_block
USING a, b;
...
END;
---------------------------------------------------------------------------------------------
CREATE TABLE T1 (N1 NUMBER, N2 NUMBER,N3 NUMBER,N4 NUMBER);
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO T1(N1,N2,N3,N4) VALUES (:N1,:N2,:N2,:N1)' USING 1,2;
END;
/
*
ERROR at line 1:
ORA-01008: not all variables bound
ORA-06512: at line 2
BEGIN
EXECUTE IMMEDIATE 'BEGIN INSERT INTO T1(N1,N2,N3,N4) VALUES (:N1,:N2,:N2,:N1); END;' USING 1,2;
END;
/
PL/SQL procere successfully completed.
SELECT * FROM T1;
N1 N2 N3 N4
---------- ---------- ---------- ----------
1 2 2 1
----------------------------------------------