Ⅰ 關於C#與sql的數據類型之間的轉換
修改一下,試下看
SqlParameter[] parameter = new SqlParameter[10];
parameter[0] = new SqlParameter("@A", Convert.ToInt32(this.A.Text.ToString()));//將string轉換為int型
parameter[1] = new SqlParameter("@B", this.B.Text.ToString());
parameter[2] = new SqlParameter("@C", Convert.ToInt32(this.C.Text.ToString()));//將string轉換為int型
parameter[3] = new SqlParameter("@D", this.D.Text.ToString());
parameter[4] = new SqlParameter("@E",this.E.Text.ToString());
parameter[5] = new SqlParameter("@F", this.F.Text.ToString());
parameter[6] = new SqlParameter("@G", Convert.ToDouble(his.G.Text.ToString());//將string類型轉換為double型
parameter[7] = new SqlParameter("@H", null);
parameter[8] = new SqlParameter("@I", this.I.Text.ToString());
parameter[9] = new SqlParameter("@J", Convert.ToInt32(this.J.TEXT.ToString()));//將string轉換為int型
Ⅱ SQL 語句中數值轉換問題
像你這樣表結構的,只能用表關聯:
select t2.b列 as a列, t3.b列 as b列, t4.b列 as c列, t5.b列 as d列
from A表 t1, B表 t2, B表 t3, B表 t4, B表 t5
where t1.a列=t2.a列 and t1.b列=t3.a列 and t1.c列=t4.a列 and t1.d列=t5.a列
實際數據上千個。
----------------------
你是指A表有上千列?那你的表設置有問題了
如果是指B表有上千行,那上面的語句就可以了.
有沒有一種函數,在select語句中直接將某列的值根據對應表進行轉換?
---------------------
可以自己寫一個自定義函數來實現的.
Ⅲ sql 行數據轉換成多列
用存儲過程和臨時表實現吧,代碼給你了
CREATE PROCEDURE [dbo].[sp_test]
AS
BEGIN
SET NOCOUNT ON;
DECLARE @A nvarchar(50)
DECLARE @B nvarchar(200)
DECLARE @Btmp nvarchar(200)
DECLARE @charindex int
CREATE TABLE #tem
(
colA nvarchar(50) NULL,
colB nvarchar(50) NULL,
)
DECLARE curRecord CURSOR FOR
SELECT cola,colb from testtable
OPEN curRecord
FETCH NEXT FROM curRecord INTO @A,@B
WHILE @@fetch_status=0
BEGIN
SELECT @charindex=charindex(',',@B),@Btmp=@B
while (@charindex)>0
begin
insert into #tem
select @A,substring(@Btmp,1,@charindex-1)
select @Btmp=substring(@Btmp,@charindex+1,len(@Btmp))
select @charindex=charindex(',',@Btmp)
end
FETCH NEXT FROM curRecord INTO @A,@B --將游標向下移1
END
CLOSE curRecord --關閉游標
DEALLOCATE curRecord
select * from #tem
DROP TABLE #tem
END
Ⅳ SQL中字元串轉換成數值
4、數據類型轉換函數
函數名 操作 例 結果
ASC(S) 求第一個字元串的ASCII碼 ASC("what") 87
CHR(N) 求ASCII碼的字元 CHR(87) w
STR(R,L,D) 數值轉換成字元,L為長度,D為小數位數 X=3.1415
STR(X,6,2) 3.14
VAL(S) 字元串轉換為數值 VAL("123") 123.00
CTOD(S) 字元串轉日期 CTOD('11/01/2002') 11/01/2002
DTOC(D) 日期轉換成字元串 DTOC(DATE()) 11/01/2002
DTOS(D) 把日期轉成年月日式的字元串 DTOS(DATE()) 20021101
CTOT(C) 字元串轉成日期時間型 CTOT(11/01/2002 10:30:50am) 11/01/2002 10:30:50am
DTOT(D) 日期型轉為日期時間型 DTOT(DATE()) 11/25/2001 00:00:01am
TTOC(T) 日期時間型轉為字元型 TTOC(DATETIME()) 11/25/2001 00:00:01am
TTOD(T) 日期時間型轉為日期型 TTOD(DATETIME()) 11/25/2001
IIF(LE,E1,E2) 邏輯判斷 IIF(A>0,"YES","NO") YES
Ⅳ SQL 行列轉換
行列轉換等經典SQL語句
1.--行列轉換
原表: 姓名 科目 成績
張三 語文 80
張三 數學 90
張三 物理 85
李四 語文 85
李四 物理 82
李四 英語 90
李四 政治 70
王五 英語 90
轉換後的表: 姓名 數學 物理 英語 語文 政治
李四 0 82 90 85 70
王五 0 0 90 0 0
張三 90 85 0 80 0
實例:
create table cj --創建表cj
(
ID Int IDENTITY (1,1) not null, --創建列ID,並且每次新增一條記錄就會加1
Name Varchar(50),
Subject Varchar(50),
Result Int,
primary key (ID) --定義ID為表cj的主鍵
);
--Truncate table cj
--Select * from cj
Insert into cj
Select '張三','語文',80 union all
Select '張三','數學',90 union all
Select '張三','物理',85 union all
Select '李四','語文',85 union all
Select '李四','物理',82 union all
Select '李四','英語',90 union all
Select '李四','政治',70 union all
Select '王五','英語',90
--行列轉換
Declare @sql varchar(8000)
Set @sql = 'Select Name as 姓名'
Select @sql = @sql + ',sum(case Subject when '''+Subject+''' then Result else 0 end) ['+Subject+']'
from (select distinct Subject from cj) as cj --把所有唯一的科目的名稱都列舉出來
Select @sql = @sql+' from cj group by name'
Exec (@sql)
2. 行列轉換--合並
原表: 班級 學號
1 1
1 2
1 3
2 1
2 2
3 1
轉換後的表: 班級 學號
1 1,2,3
2 1,2
3 1
實例:
Create table ClassNo --創建表ClassNo
(
ID Int IDENTITY(1,1) not null, --創建列ID,並且每次新增一條記錄就會加1
Class Varchar(50), --班級列
Number Varchar(50), --學號列
Primary Key(ID) --定義ID為表ClassNo的主鍵
);
--Truncate Table ClassNo
--Select * from ClassNo
Insert Into ClassNo
Select 1,1 Union all
Select 1,2 Union all
Select 1,3 Union all
Select 2,1 Union all
Select 2,2 Union all
Select 3,1
創建一個合並的函數
--Drop Function KFReturn
Create Function KFReturn(@Class Varchar(50))
Returns Varchar(8000)
as
Begin
Declare @str Varchar(8000)
Set @str = ''
Select @str = @str + cast(Number as Varchar(50)) + ',' from ClassNo Where Class = @Class
Set @str = SubString(@str,1,len(@str)-1)
Return(@str)
End
--調用自定義函數得到結果
Select Distinct Class,dbo.KFReturn(Class) From ClassNo
3:列轉行
--Drop Table ColumnToRow
Create table ColumnToRow
(
ID Int IDENTITY(1,1) not null, --創建列ID,並且每次新增一條記錄就會加1
a int,
b int,
c int,
d int,
e int,
f int,
g int,
h int,
Primary Key(ID) --定義ID為表ColumnToRow的主鍵
);
--Truncate Table ColumnToRow
--Select * from ColumnToRow
Insert Into ColumnToRow
Select 15,9,1,0,1,2,4,2 Union all
Select 22,34,44,5,6,7,8,7 Union all
Select 33,44,55,66,77,88,99,12
Declare @sql Varchar(8000)
Set @sql = ''
Select @sql = @sql + rtrim(name) + ' from ColumnToRow union all Select ' from SysColumns Where id = object_id('ColumnToRow')
Set @sql = SubString(@sql,1,len(@sql)-70)
--70的長度就是這個字元串'from ColumnToRow union all Select ID from ColumnToRow union all Select ',因為它會把ID這一列的值也算進去,所以要把它截掉
Exec ('Select ' + @sql + ' from ColumnToRow')
Ⅵ SQL語句,關於插入轉換語句
兩列合並?還是相加?
update b..c set filedname=convert(varchar(30),a..d.fieldname1+a..d.fieldname2) from b..c,a..d where b..c.id=a..d.id 這是相加的
update b..c set filedname=convert(varchar(30),a..d.fieldname1)+convert(varchar(30),a..d.fieldname2) from b..c,a..d where b..c.id=a..d.id 這是合並的
Ⅶ sql資料庫中欄位轉換問題:
update 表的名字
set 某欄位=substring(某欄位,1,PATINDEX('%[0-9]%',某欄位)-1)+cast(cast(substring(某欄位,PATINDEX('%[0-9]%',某欄位),LEN(某欄位)) as int)+1 as varchar)
where ……(指定修改某行數據)
Ⅷ sql動態實現行列轉換
題:假設有張學生成績表(tb)如下:
姓名 課程 分數
張三 語文 74
張三 數學 83
張三 物理 93
李四 語文 74
李四 數學 84
李四 物理 94
想變成(得到如下結果):
姓名 語文 數學 物理
---- ---- ---- ----
李四 74 84 94
張三 74 83 93
-------------------
*/
create table tb(姓名 varchar(10) , 課程 varchar(10) , 分數 int)
insert into tb values('張三' , '語文' , 74)
insert into tb values('張三' , '數學' , 83)
insert into tb values('張三' , '物理' , 93)
insert into tb values('李四' , '語文' , 74)
insert into tb values('李四' , '數學' , 84)
insert into tb values('李四' , '物理' , 94)
go
--SQL SERVER 2000 靜態SQL,指課程只有語文、數學、物理這三門課程。(以下同)
select 姓名 as 姓名 ,
max(case 課程 when '語文' then 分數 else 0 end) 語文,
max(case 課程 when '數學' then 分數 else 0 end) 數學,
max(case 課程 when '物理' then 分數 else 0 end) 物理
from tb
group by 姓名
--SQL SERVER 2000 動態SQL,指課程不止語文、數學、物理這三門課程。(以下同)
declare @sql varchar(8000)
set @sql = 'select 姓名 '
select @sql = @sql + ' , max(case 課程 when ''' + 課程 + ''' then 分數 else 0 end) [' + 課程 + ']'
from (select distinct 課程 from tb) as a
set @sql = @sql + ' from tb group by 姓名'
exec(@sql)
Ⅸ SQL語句將字元串型轉化為整數型的函數是什麼
我關於sql函數方面的搜集資料。看了對函數你可能就會了解一些了。。。。首先樓主 寫的那條語句 絕對不能執行。。應該這樣寫
USE 資料庫名
GO
SELECT DISTINCT cuser
FROM cat
WHERE time ='' or time >'' or time <''
ORDER BY time
DESC
GO
你如果想把某列,或者某欄位 的數據 由 亂七八糟的轉換成大寫的 用這個 函數 UPPER
用法 UPPER (某欄位)
關於sql函數詳解 如下:
SQL函數,詳細描述如下: Avg函數 Avg函數,計算查詢中某一特定欄位資料的算術平均值。 語法為Avg(運算式)。運算式,可為欄位名稱、運算式、或一個函數,此函數可 以是一個內部或使用者定義的,但不能為其它的SQL函數。 Avg函數在計算時,不包含任何值為 Null 的資料。 Count函數 Count函數,計算符合查詢條件的記錄條數。 語法為Count (運算式)。運算式,可為欄位名稱、*、多個欄位名稱、運算式、 或一個函數,此函數可以是一個內部或使用者定義的,但不能為其它的SQL函數。 Count 函數於計算時,不包含任何值為 Null 的資料。 但是,Count(*) 則計算所有符合查詢條件的記錄條數,包含那些Null的資料。 如果Count(欄位名稱) 的欄位名稱為多個欄位,將欄位名稱之間使用 & 分隔。 多個欄位當中,至少有一個欄位的值不為Null的情況下,Count函數才會計算為一條 記錄。如果多個欄位都為Null,則不算是一條記錄。譬如: SELECT Count(價格 & 代號) From 產品 First/Last函數 First函數、Last函數,傳回指定欄位之中符合查詢條件的第一條、最末條記錄 的資料。 語法為First(運算式) 和 Last(運算式)。運算式,可為欄位名稱、運算式、或 一個函數,此函數可以是一個內部或使用者定義的,但不能為其它的SQL函數。 Min/Max函數 Min函數、Max函數,傳回指定欄位之中符合查詢條件的最小值、最大值。 語法為Min(運算式) 和 Max(運算式)。運算式,可為欄位名稱、運算式、或一個 函數,此函數可以是一個內部或使用者定義的,但不能為其它的SQL函數。 StDev函數 StDev函數,計算指定欄位之中符合查詢條件的標准差。 語法為StDev(運算式)。運算式,可為欄位名稱、運算式、或一個函數,此函數 可以是一個內部或使用者定義的,但不能為其它的SQL函數。 如果符合查詢條件的記錄為兩個以下時,StDev函數將傳回一個Null 值,該表示 不能計算標准差。 Sum函數 Sum函數,計算指定欄位之中符合查詢條件的資料總和。 語法為Sum(運算式)。運算式,可為欄位名稱、運算式、或一個函數,此函數可 以是一個內部或使用者定義的,但不能為其它的SQL函數。 Sum函數可使用兩個欄位資料運算式,譬如計算產品的單價及數量欄位的合計: SELECT Sum(單價 * 數量) FROM 產品 Var函數 Var函數,計算指定欄位之中符合查詢條件的變異數估計值。 語法為Var(運算式)。運算式,可為欄位名稱、運算式、或一個函數,此函數可 以是一個內部或使用者定義的,但不能為其它的SQL函數。 如果符合查詢條件的記錄為兩個以下時,Var函數將傳回一個Null 值,該表示不 能計算變異數。
Ⅹ 寫sql,怎麼將查詢結果的行列轉換呀
有意思的問題 給出一個參考的URL: 假設你表是這樣的結構部件 入庫日期 入庫數量 A 1/1 10 A 1/1 5 A 1/2 10 B 1/5 10 其實就是兩種方法,假設你的資料庫是11以前的,只能先定義好查哪天到哪天 然後那麼 selct 部件, sum( decode(入庫日期=1號,入庫數量,0), sum( decode(入庫日期=2號,入庫數量,0), 以此類推 from 入庫表 group BY 部件(原理上就是將不是這天的變成0,再合計)要是Oracle資料庫是11的話,就簡單了,直接pivot搞定 pivot語法就不說了,網上一堆一堆的 ~