當前位置:首頁 » 編程語言 » sql重復佔位符
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql重復佔位符

發布時間: 2022-05-28 00:20:25

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

----------------------------------------------