sql語句中的一些常用語法

2022-02-24 07:13:11 字數 3013 閱讀 9962

以前一直在程式中寫sql,最近在sql查詢分析器中寫sql,發現很多以前寫法都行不動,下面做乙個記錄

1、sql語句中if else

if

...

begin

...

endelse

begin

....

end

2、把字段賦值給變數:

declare

@selectsql

nvarchar(100),@tablecount

intset

@selectsql='

select @tablecount1=count(1) from ['+

@attachementtable+'

]'exec sp_executesql @selectsql,n'

@tablecount int out

',@tablecount output

其中@tablecount output表示輸出引數,多個引數寫法n'@tablecount int,@param2 nvarchar(100),.....',如果需要輸出,引數最後加上out

3、sql語句中的迴圈(游標,話說是什麼鬼,不清楚)

declare 游標名稱 cursor

forselect 欄位1,欄位2,欄位3,... from 表名 where

...open

游標名稱

fetch

next

from 游標名稱 into

變數名1,變數名2,變數名3,...

while

@@fetch_status=0

begin

sql語句執行過程... ...

fetch

next

from 游標名稱 into

變數名1,變數名2,變數名3,... /*這裡重複寫一次

endclose

游標名稱

deallocate 游標名稱 (刪除游標)

例子:

declare

@idint,@insertsql

nvarchar(1000),@filename

nvarchar(100),@detailid

int,@attachementtable

nvarchar(100),@tablename

varchar(100),@fieldname

varchar(100),@path

nvarchar(100),@thumbnail

nvarchar(100),@username

nvarchar(100),@state

int,@thedate

datetime

declare listdata cursor

forselect[id

],[tablename

],[fieldname

],[path

],[thumbnail

],[detailid

],[username

],[state

],[thedate

]from

[pa_attachments

]open

listdata

fetch

next

from listdata into

@id,@tablename,@fieldname,@path,@thumbnail,@detailid,@username,@state,@thedate

while

@@fetch_status=0

begin

set@attachementtable

=@tablename+'

_'+@fieldname

ifexists (select

*from sys.objects where

object_id

=object_id(n'['

+@attachementtable+'

]') and type in (n'u'

))begin

set@filename

=reverse(substring(reverse(@path),1,charindex('

/',reverse(@path)) -

1))

set@insertsql='

insert into ['+

@attachementtable+'

]([parentid],[name],[path],[thumbnail],[username],[state],[thedate],[uid]) values('+

convert(varchar(10),@detailid)+',

'''+

@filename

+'''

,'''

+@path

+'''

,'''

+@thumbnail

+'''

,'''

+@username

+''','

+convert(varchar(10),@state)+',

'''+

convert(varchar(20),@thedate)+

''',0)

'execute(@insertsql

)end

else

begin

update pa_attachments set

[state]=-

1where[id

]=@idend

fetch

next

from listdata into

@id,@tablename,@fieldname,@path,@thumbnail,@detailid,@username,@state,@thedate

endclose

listdata

deallocate listdata

基於sql語句的一些常用語法積累總結

1.當某一字段的值希望通過其它字值顯示出來時 記錄轉換 可通過下面的語句實現 case type when 1 then 普通通道 when 2 then 高階通道 end as type 其中 type 是欄位名,1 2 是字段值 2.返回資料庫中使用者表的表單名 select name from...

Mysql 一些常用語句

mysqldump u root p anclgk tmp.sql 匯出為sql mysql uroot p123456 tmp.sql 匯入 mysql use abc 使用已建立的資料庫 mysql set names utf8 設定編碼 mysql source home abc abc.sq...

站長注意SQL 注入一些常用語句

站長注意sql 注入一些常用語句 是否支援多句查詢 是否支援子查詢 返回使用者名稱 當前使用者是否為 sysadmin 固定伺服器角色的成員。當前使用者是否為 db owner 固定資料庫角色的成員 返回資料庫名 作業系統和sqlserver版本 本地伺服器名稱 http www.com.cn co...