『壹』 sql ${}可以接受數組類型的數據嗎
SQL Server並沒有數組類型,ANSI SQL-92標准中並沒有任何有關數組方面的定義。要實現其他高級語言中的數組功能,我們必須使用一些特殊的處理方法,其中包括特殊設計的字元參數、臨時表、XML等。
『貳』 在SQL中如何從數組中獲取值再進行查詢
----首先定義一個split函數,其作用是將字元串拆分成表
CREATEFUNCTION[fn_split]
(@SourceSqlvarchar(8000),@StrSepratevarchar(10))
RETURNS@temptable
(
[n]intNULL,
[a]varchar(100)NULL
)
AS
BEGIN
declare@iint,@nint;
set@n=0;
set@SourceSql=rtrim(ltrim(@SourceSql));
set@i=charindex(@StrSeprate,@SourceSql);
while(@i>=1)
begin
set@n=@n+1;
insert@temp([n],[a])values(@n,left(@SourceSql,@i-1));
set@SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i);
set@i=charindex(@StrSeprate,@SourceSql);
end
if(@SourceSql<>'')
begin
set@n=@n+1;
insert@temp([n],[a])values(@n,@SourceSql);
end
return
END
GO
--接下來利用這個函數將數組轉化成表,查出A的對應值
declare@Cvarchar(100),@Dvarchar(100);
set@C='a1,a2,a3,a4,a5,a6';
set@D='b1,b2,b3,b4,b5,b6';
declare@Avarchar(10),@Bvarchar(10);
set@A='a4';
select@B=t2.afromfn_split(@C,',')t1,fn_split(@D,',')t2wheret1.n=t2.nandt1.a=@A;
select@B;
--這里將得到@B=b4
--接下來就可以使用@B了
select TOP 7 * from Data_Content where title = @B order BY ID DESC
『叄』 如何用sql語句取出二維數組
只要兩個表有關聯的欄位,肯定就可以
類似語句
select * from A left join B using(id) where ....
如果有不明白的可以M我
『肆』 PLSQL:如何讀取參數數組
DECLARE @Test VARCHAR(50)
DECLARE @ArgsTable TABLE
(
Arg VARCHAR(50)
)
SET @Test = 'ASD,FGH,JKL,YUI'
DECLARE @TempIndex INT
WHILE @Test LIKE '%,%'
BEGIN
SET @TempIndex = CHARINDEX(',',@Test) --取出,位置
INSERT INTO @ArgsTable(Arg)
SELECT SUBSTRING(@Test,0,@TempIndex) --截取第一個參數
SET @Test = RIGHT(@Test,LEN(@Test) - @TempIndex) --使 @Test 取截後的字元串
IF @Test NOT LIKE '%,%' --如果是最後一個,加入列表並退出
BEGIN
INSERT INTO @ArgsTable(Arg)
SELECT @Test
BREAK;
END
END
SELECT * FROM @ArgsTable
『伍』 SQL語句可以聲明使用數組么
SQL語句可以聲明使用數組,聲明方法為:
1、先定義一個數組,數組內容是一些數字,可以對應為數據表裡的id列。
『陸』 請問數組可以作為sql的查詢源嗎
SQL語句並不屬於VB本身的命令,當VB遇到程序中的SQL語句時,就會自動提交給操作系統中相關的資料庫查詢引擎進行處理,因此VB本身的變數是無法直接傳遞到SQL語句中的,必須轉化為實際數值。也就是說,當資料庫查詢引擎得到這條SQL語句時,就會把a(1000)這幾個字元直接作為表名稱來看待了,而這顯然是錯誤的。這也就意味著,數組是不可能作為SQL的查詢源的。別把SQL語句看成是萬能的,它不過就是系統內置的資料庫搜索引擎與其他高級程序設計語言的連接紐帶,也就是說,同一條SQL語句,在VB、VC、C++等等中的用法是完全一樣的。
『柒』 sql 讀取數組問題
我以前也用這種方式,如果在資料庫里查詢,就要用到游標,如果在程序里就要用到循環.
我現在遇到這種情況,就把它改成三張表,一張商品表,一張分類表,一張是商品與分類對應表,這樣處理起來更方便
『捌』 asp里sql怎樣讀出數組的值
T-SQL對字元串的處理能力比較弱,比如要循環遍歷象1,2,3,4,5這樣的字元串,如果用數組的話,遍歷很簡單,但是T-SQL不支持數組,所以處理下來比較麻煩。下邊的函數,實現了象數組一樣去處理字元串。 一、按指定符號分割字元串,返回分割後的元素個數,方法很簡單,就是看字元串中存在多少個分隔符號,然後再加一,就是要求的結果。 Create function Get_StrArrayLength ( @str varchar(1024), --要分割的字元串 @split varchar(10) --分隔符號 ) returns int as begin declare @location int declare @start int declare @length int set @str=ltrim(rtrim(@str)) set @location=charindex(@split,@str) set @length=1 while @location<>0 begin set @start=@location+1 set @location=charindex(@split,@str,@start) set @length=@length+1 end return @length end 調用示例:select dbo.Get_StrArrayLength('78,1,2,3',',') 返回值:4二、按指定符號分割字元串,返回分割後指定索引的第幾個元素,象數組一樣方便 Create function Get_StrArrayStrOfIndex ( @str varchar(1024), --要分割的字元串 @split varchar(10), --分隔符號 @index int --取第幾個元素 ) returns varchar(1024) as begin declare @location int declare @start int declare @next int declare @seed int set @str=ltrim(rtrim(@str)) set @start=1 set @next=1 set @seed=len(@split) set @location=charindex(@split,@str) while @location<>0 and @index>@next begin set @start=@location+@seed set @location=charindex(@split,@str,@start) set @next=@next+1 end if @location =0 select @location =len(@str)+1 --這兒存在兩種情況:1、字元串不存在分隔符號 2、字元串中存在分隔符號,跳出while循環後,@location為0,那默認為字元串後邊有一個分隔符號. return substring(@str,@start,@location-@start) end 調用示例:select dbo.Get_StrArrayStrOfIndex('8,9,4',',',2) 返回值:9三、結合上邊兩個函數,象數組一樣遍歷字元串中的元素 declare @str varchar(50) set @str='1,2,3,4,5' declare @next int set @next=1 while @next<=dbo.Get_StrArrayLength(@str,',') begin print dbo.Get_StrArrayStrOfIndex(@str,',',@next) set @next=@next+1 end
『玖』 在sql語言中,如何提取出數組中的一段數據。
SQL基於集合的,沒有數組
數組可用集合代替,比如一個表
『拾』 SQL語句里能用數組類型嗎
在SQL Server 2005、2008版中
數組是沒有,如果要一次插入多條數據是可以的
語法如下:
insert into 表名(欄位1,欄位,……,欄位n)
select 數值1,數值2,……,數值n union
select 數值1,數值2,……,數值n union
select 數值1,數值2,……,數值n union
select 數值1,數值2,……,數值n union
select 數值1,數值2,……,數值n