⑴ sql 中函數分系統內置函數和什麼函數
誒亞
看來我的貼幾章書才行
1.請總結為日期欄位賦值的幾種方式,並舉例說明
oracle中有個到當前系統時間--sysdate,如:
select sysdate from al
可對日期進行自述運算:
select (sysdate-mybirthday)/7 from person
months_between('01-sep-95','11-jan-94')---取得二個日期之間的間隔月數(19.6774194)
add_months('11-jan-94',6)---給指定日期加上指定的月份後得到一個新的日期(11-jul-94)
next_day('01-sep-85','friday')---取得當前日期中下個周五的日期(01-jul-95)
last_day('01-feb-95')---取得當前日期中月份的最後一天(28-feb-95)
round進行四捨五入,trunc則否,以下是我的操作結果:
sysdate為:
SYSDATE
----------
28-7月 -06
select
round(sysdate,'month') RM,
round(sysdate,'year') RY,
trunc(sysdate,'month') TM,
trunc(sysdate,'year') TY
from al;
RM RY TM TY
---------- ---------- ---------- ----------
01-8月 -06 01-1月 -07 01-7月 -06 01-1月 -06
2.請總結select語句的幾種用法,並舉例說明
inner join
left join
right join
cross join (一般不允許用)
3.請總結SQL操作符,每種操作符各舉一例說明
||字元串相加
>
<
=
Like
Between and
4.請總結SQL單行函數,每個函數各舉一例說明
越全面越好,
>字元處理
upper(str)---將字元串str全部轉換成大寫
lower(str)---將字元串str全部轉換成小寫
initcap(str)---將字元串中每個單詞的首字母大寫
concat(str1,str2)---將字元串str1與str2連接起來(也可以通過'||'號直接相連)
substr(str,a,b)---取字元串str中的指定字元,從位置a開始取長度為b的字元串,假如a為正則從左邊開始,否則從右邊開始
instr(str,'z')---取得str字元串中從左邊開始每一次出現z字元的下標位置(下標從1開始)
lpad(str,12,'*')---左填充,即將字元串str長度填充到12,假如其不足12位則在左邊以*號填充
rpad(str,12,'*')---右填充,同上
length(str)---計算字元串str的長度
2>數字函數
round(45.926,2)---將前一數保留指定的小數位,並四捨五入(45.93),假如指定位是負數則意為在小數點左邊保留指定位,如round(45.923,-1)=50,rount(45.923,0)=46,round(45.93,-2)=0,round(55.93,-2)=100
trunc(45.926,2)---同上,得不四捨五入(45.92)
mod(1600,300)---求余(100)
⑵ SQL中提示「不是可以識別的 內置函數名稱。」
StudentGirl() 返回的是數據表, 用select StudentGirl() 這樣是輸出單列值, 不是整張表的數據, 所以可以把 StudentGirl()直接當成一張表使用, 如:
SELECT * FROM dbo.StudentGirl() WHERE .....
可以加條件, 按照正常的查表語句都OK
⑶ 如何在SQL語句中使用FUNCTION
1、function是SQL的函數
是由一個或多個 Transact-SQL 語句組成的子程序,可用於封裝代碼以便重新使用。Microsoft® SQL Server™ 並不將用戶限制在定義為 Transact-SQL 語言一部分的內置函數上,而是允許用戶創建自己的用戶定義函數。
可使用 CREATE FUNCTION 語句創建、使用 ALTER FUNCTION 語句修改、以及使用 DROP FUNCTION 語句除去用戶定義函數。每個完全合法的用戶定義函數名 (database_name.owner_name.function_name) 必須唯一。
必須被授予 CREATE FUNCTION 許可權才能創建、修改或除去用戶定義函數。不是所有者的用戶在 Transact-SQL 語句中使用某個函數之前,必須先給此用戶授予該函數的適當許可權。若要創建或更改在 CHECK 約束、DEFAULT 子句或計算列定義中引用用戶定義函數的表,還必須具有函數的 REFERENCES 許可權。
在函數中,區別處理導致刪除語句並且繼續在諸如觸發器或存儲過程等模式中的下一語句的 Transact-SQL 錯誤。在函數中,上述錯誤會導致停止執行函數。接下來該操作導致停止喚醒調用該函數的語句。
用戶定義函數的類型
2、Procere是SQL的存儲過程
存儲過程是由流控制和SQL語句書寫的過程,這個過程經編譯和優化後存儲在資料庫伺服器中,應用程序使用時只要調用即可。在ORACLE中,若干個有聯系的過程可以組合在一起構成程序包。
存儲過程是利用SQL Server所提供的Transact-SQL語言所編寫的程序。Transact-SQL語言是SQL Server提供專為設計資料庫應用程序的語言,它是應用程序和SQL Server資料庫間的主要程序式設計界面。它好比Oracle資料庫系統中的PL-SQL和 Informix的資料庫系統結構中的Informix- 4GL語言。這類語言主要提供以下功能,讓用戶可以設計出符合引用需求的程序:
1)、變數說明
2)、ANSI兼容的SQL命令(如Select,Update….)
3)、一般流程式控制制命令(if…else…、while….)
4)、內部函數
⑷ 為什麼在sql sever中使用format對文字格式化,提示為:'FORMAT' 不是可以識別的 內置函數名稱
format在SQL SERVER上不能用,SQL SERVER上規范日期格式是用CONVERT(),FORMAT在ACCESS中能用。
⑸ sql有函數能解決我這個問題嗎(內置函數)over(partition by..) 又是怎麼使用的
if Object_id('tb1') is not null Drop table tb1;
go
create table tb1(date int primary key, sale int);
go
insert into tb1(date, sale)
select 1, 20 union all
select 2, 15 union all
select 3, 14 union all
select 4, 18 union all
select 5, 30;
select * from tb1;
--方法一,如果只有一個聚合,多個聚合時請使用方法二
select date, sale, (select sum(sale) from tb1 b where b.date <= a.date) as [sum]
from tb1 a
group by date,sale;
--方法二
select a.date, a.sale, sum(b.sale) as [sum]
from tb1 a
join tb1 b
on b.date <= a.date
group by a.date, a.sale;
/*
--查詢結果
date sale sum
----------- ----------- -----------
1 20 20
2 15 35
3 14 49
4 18 67
5 30 97
*/
⑹ 如何查看SQL中已經存在的函數
這是查出存儲過程和函數:
select object_name,created,status from user_objects
where lower(object_type) in ('procere','function');
如果不行,改成大寫再執行下
⑺ SQL有哪些內置的標准函數,有沒有清單和用法
google一下就知道了
比如:
聚合函數:
AVG
COUNT
MAX
MIN
RANGE
STDEV
SUM
VARIANCE
內置時間函數:
DAY
MDY
MONTH
WEEKDAY
YEAR
CURRENT
EXTEND
字元串操作函數
LOWER
UPPER
INITCAP
REPLACE
SUBSTR
SUBSTRING
LPAD
RPAD
其他函數:
LENGTH
USER
CURRENT
TODAY
DBSERVERNAME
HEX
DBINFO
DECODE
NVL
TODAY
⑻ sql內置函數就是 sql自帶的函數,已經在系統內定義好的 ,直接拿過來就能用的函數嗎
恩,可以這么理解.
內置函數是 資料庫系統自帶的.
與 內置函數對應的, 就是用戶自定義函數. 就是自己寫的.
⑼ 如何查看sql server 內置函數
ascii(), 將字元轉換為ASCII碼, ASCII('abc') = 97
char(), ASCII 碼 轉換為 字元
low(),upper()
str(a,b,c)轉換數字為字元串。 a,是要轉換的字元串。b是轉換以後的長度,c是小數位數。str(123.456,8,2) = 123.46
ltrim(), rtrim() 去空格
left(n), right(n), substring(str, start,length) 截取字元串
charindex(子串,母串),查找是否包含。 返回第一次出現的位置,沒有返回0
patindex('%pattern%', expression) 功能同上,可是使用通配符
replicate('char', rep_time), 重復字元串
⑽ .SQL Server 2005 支持用戶定義函數和內置系統函數嗎
當然支持了。SQL的應用經常會用到各種系統內置函數,用戶也可以自己編寫自定義函數。