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

sql新增函數

發布時間: 2022-08-29 00:52:08

① 寫一個sql自定義函數

declare @flag int,@no varchar(20),@return int
--先為變數賦值
--set @flag=0...
select @return = search1(@flag,@no)

我沒明白,是要寫函數的代碼還是寫調用的代碼?調用方法上面已寫。

② 在SQL中怎樣調用自定義函數

在select後跟你的自定義函數就可以。

mysql中用select調用自帶的now()函數:
mysql> select now();
然後mysql就會返回當前的時間。

③ sql 創建函數

--測試環境mssql2008
--思路,按逗號拆分字元串再行列轉換
--用CLR效果更好

--1.建表
CreatetableT
(
pkqvarchar(200)
)

--2.插入數據
insertintoTvalues('4井,0井,0井,0井,0井,0井,,,,,,,,,,')
insertintoTvalues('曠,0井,休,,,0井,0井,,,0井,,,,,,,,,,8井,4井,0井,0井,0井,0井,0井,8井,4井')
insertintoTvalues('曠,0井,休,0井,0井,0井,休,休,休,休,0井,0井,休,8井,4井')

--3.創建字元串拆分函數(用C#創建CLR函數效果會更好)
CreateFunctionf_split1(@SourceSqlVarchar(8000),@StrSeprateVarchar(2))
Returns@tempTable(idIntIdentity(1,1),colVarchar(100))
As
begin
Declare@chasVarchar(100)
Set@SourceSql=@SourceSql+@StrSeprate
While(@SourceSql<>'')
Begin
Set@ch=left(@SourceSql,Charindex(@StrSeprate,@SourceSql,1)-1)
Insert@temp(col)Values(@ch)
Set@SourceSql=Stuff(@SourceSql,1,Charindex(@StrSeprate,@SourceSql,1),'')
End
Return
End

--3.查詢
select
[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],
[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],
[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31]
from
(
SelectROW_NUMBER()over(orderbygetdate())ASRn,*
fromT
)Souterapplydbo.f_split1(pkq,',')
pivot
(
max(col)
foridin
(
[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],
[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],
[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31]
)
)P

--4.效果

④ 組態王與SQL 連接的問題,SQLinsert的函數如何用

sql中insert函數的用法如下:
INSERT(str,pos,len,newstr)
返回字元串str的子字元串的開始位置pos和len個字元長的字元串用newstr取代。返回原始字元串,如果pos的字元串的長度內。如果len不是在剩下的字元串的長度,其餘替換的字元串從位置pos。返回NULL,如果任何參數是NULL。
舉例:
SQL> SELECT INSERT('Quadratic', 3, 4, 'What');
+---------------------------------------------------------+
| INSERT('Quadratic', 3, 4, 'What') |
+---------------------------------------------------------+
| QuWhattic |
+---------------------------------------------------------+
1 row in set (0.00 sec)

⑤ 什麼是SQL自定義函數

Create
Function
myFunc(@param1
int,@param2
varchar(50))
returns
int
as
begin
......
RETURN
0
end
類似這樣自己建的函數,就是SQL自定義函數,可以自定義參數和返回值的,能夠在查詢語句中使用的。
像max(),min(),getdate(),newid()這些就是系統函數了。

⑥ SQL查詢 欄位加函數

這個不行。SQL語句要求查詢中,必須是欄位名,你這里換成拼音後,就不是表的欄位了,必然錯誤。如果實在要這樣做,你只能修改表的定義,把這個欄位修改為拼音。

⑦ 在數據表中添加一個欄位的SQL語句怎麼寫

通用式: alter table [表名] add [欄位名] 欄位屬性 default 預設值 default 是可選參數
增加欄位: alter table [表名] add 欄位名 smallint default 0 增加數字欄位,整型,預設值為0
alter table [表名] add 欄位名 int default 0 增加數字欄位,長整型,預設值為0
alter table [表名] add 欄位名 single default 0 增加數字欄位,單精度型,預設值為0
alter table [表名] add 欄位名 double default 0 增加數字欄位,雙精度型,預設值為0
alter table [表名] add 欄位名 Tinyint default 0 增加數字欄位,位元組型,預設值為0
alter table [表名] add 欄位名 text [null] 增加備注型欄位,[null]可選參數

alter table [表名] add 欄位名 memo [null] 增加備注型欄位,[null]可選參數

alter table [表名] add 欄位名 varchar(N) [null] 增加變長文本型欄位大小為N(1~255)

alter table [表名] add 欄位名 char [null] 增加定長文本型欄位大小固定為255

alter table [表名] add 欄位名 Datetime default 函數增加日期型欄位,其中函數可以是now(),date()等,表示預設值

(上面都是最常用的,還有其他的屬性,可以參考下面的數據類型描述)

刪除欄位: alter table [表名] drop 欄位名

修改變長文本型欄位的大小:alter table [表名] alter 欄位名 varchar(N)

刪除表: drop table [表名]

創建表:

sql="CREATE TABLE [表名] ([欄位1,並設置為主鍵] int IDENTITY (1, 1) NOT NULL CONSTRAINT PrimaryKey PRIMARY KEY,"&

"[欄位2] varchar(50),"&

"[欄位3] single default 0,"&

"[欄位4] varchar(100) null,"&

"[欄位5] smallint default 0,"&

"[欄位6] int default 0,"&

"[欄位7] date default date(),"&

"[欄位8] int default 1)"

conn.execute sql

有null 的表示欄位允許零長

⑧ SQL 中UPDATE用法

Update是一個資料庫SQL語法用語,用途是更新表中原有數據,單獨使用時使用where匹配欄位。

語法為:UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值

例如:Update table_name Set column_name = new_value Where column_name = some_value

(8)sql新增函數擴展閱讀

update使用注意事項:

1、sp_updatestats可以更新統計信息到最新。

2、低內存會導致未被客戶端連接的查詢計劃被清除。

3、修改表結構,修改索引後,查詢計劃會被清除,可以再修改後運行幾遍查詢。

4、使用update時候,order by 會影響查詢速度,where中使用函數則會調用篩選器進行掃描,掃描表要盡量避免。

參考資料來源:網路—update

⑨ SQL 自定義函數中不能使用insert update之類的語句嗎

不單MSSQL,包括其他關系資料庫在內都不允許單獨一條SQL語句內同時更新(Update記錄和追加(Insert)記錄,但是使用T-SQL在存儲過程或自定義函數里等可以使用IF流程,根據不同的條件執行不同的操作。例如:
CREATE PROCEDURE myPro1 (@TaskID int) ASif exists(select 1 from paiche where TaskID=@TaskID) update paiche set qty=col*1.1 else begin insert into paiche (TaskID,qty) values(@TaskID,100) end