sql函數使用
A. 第128章 sql函數 %SQLSTRING
將值排序為字元串的排序規則函數。
%SQLSTRING 將表達式轉換為按(區分大小寫)字元串排序的格式。 %SQLSTRING 從字元串中去除尾隨空格(空格、製表符等),然後在字元串的開頭添加一個前導空格。這個附加的空格強制將 NULL 和數值作為字元串進行整理。從數字中刪除前導零和尾隨零。
因為 %SQLSTRING 將空格附加到所有值,所以它將 NULL 值整理為空格,字元串長度為 1 。 %SQLSTRING 將任何僅包含空格(空格、製表符等)的值整理為 SQL 空字元串( '' )。當 %SQLSTRING 將空格附加到空(零長度)字元串時,它會將空格加上空字元串的內部表示形式 $CHAR(0) 進行整理,從而導致字元串長度為 2 。
可選的 maxlen 參數在索引或整理時將表達式字元串截斷為指定的字元數。例如,如果插入帶有 maxlen 截斷的字元串,則插入完整的字元串,並且可以通過 SELECT 語句檢索;此字元串的全局索引被截斷為指定長度。這意味著 ORDER BY 和比較操作僅評估截斷的索引字元串。這種截斷對於對超過下標的最大字元長度的字元串進行索引特別有用。使用 maxlen 參數,如果需要對長欄位進行索引,可以使用截斷長度參數。
%SQLSTRING 在轉換表達式後執行 maxlen 截斷;如果 maxlen 超過轉換後的表達式的長度,則不添加填充。最大字元串長度為 3,641,144 個字元; maxlen 沒有強制執行最大值。
可以使用 %SYSTEM.Util 類的 Collation() 方法在 ObjectScript 中執行相同的排序規則轉換:
也可以使用 SQLSTRING() 方法調用從 ObjectScript 調用此函數:
這兩種方法都支持 SQLSTRING 轉換後的截斷。請注意,截斷長度必須包括附加的空白:
注意:要將系統范圍的默認排序規則從 %SQLUPPER (不區分大小寫)更改為 %SQLSTRING (區分大小寫),請使用以下命令:
發出此命令後,必須清除索引,重新編譯所有類,然後重建索引。不要在其他用戶訪問表的數據時重建索引。這樣做可能會導致查詢結果不準確。
以下查詢在 WHERE 子句中使用 %SQLSTRING 來執行區分大小寫的選擇:
默認情況下, %STARTSWITH 字元串比較不區分大小寫。此示例使用 %SQLSTRING 格式使此比較區分大小寫。它返回所有以 「Al」 開頭的名稱(例如 Allen 、 Alton 等)。請注意,使用 %STARTSWITH 時,應將 %SQLSTRING 排序規則應用於語句的兩側。
以下示例使用帶有字元串截斷的 %SQLSTRING 來返回每個名稱的前兩個字元。請注意,字元串截斷是 3 (不是 2 ),因為 %SQLSTRING 添加了前導空格。 ORDER BY 子句使用這個兩個字元的欄位將行放在一個粗略的排序順序中:
此示例在不更改字母大小寫的情況下返回截斷的值。
以下示例將 %SQLSTRING 應用於子查詢:
B. 求教sql函數的正確用法
distinct 省略選擇欄位中包含重復數據的記錄,就是出來的結果無重復數據
RTRIM 去掉字元串右邊的空白字元
CAST 和 CONVERT
將某種數據類型的表達式顯式轉換為另一種數據類型。CAST 和 CONVERT 提供相似的功能。
CAST ( expression AS data_type )
CONVERT (data_type[(length)], expression [, style])
參數
expression
是任何有效的 Microsoft® SQL Server™ 表達式。有關更多信息,請參見表達式。
data_type
目標系統所提供的數據類型,包括 bigint 和 sql_variant。不能使用用戶定義的數據類型。有關可用的數據類型的更多信息,請參見數據類型。
length
nchar、nvarchar、char、varchar、binary 或 varbinary 數據類型的可選參數。
style
日期格式樣式,藉以將 datetime 或 smalldatetime 數據轉換為字元數據(nchar、nvarchar、char、varchar、nchar 或 nvarchar 數據類型);或者字元串格式樣式,藉以將 float、real、money 或 smallmoney 數據轉換為字元數據(nchar、nvarchar、char、varchar、nchar 或 nvarchar 數據類型)。
SQL Server 支持使用科威特演算法的阿拉伯樣式中的數據格式。
在表中,左側的兩列表示將 datetime 或 smalldatetime 轉換為字元數據的 style 值。給 style 值加 100,可獲得包括世紀數位的四位年份 (yyyy)。
REPLICATE
以指定的次數重復字元表達式。
REPLICATE ( character_expression , integer_expression )
參數
character_expression
由字元數據組成的字母數字表達式。character_expression 可以是常量或變數,也可以是字元列或二進制數據列。
integer_expression
是正整數。如果 integer_expression 為負,則返回空字元串。
SUBSTRING
返回字元、binary、text 或 image 表達式的一部分。
SUBSTRING ( expression , start , length )
參數
expression
是字元串、二進制字元串、text、image、列或包含列的表達式。不要使用包含聚合函數的表達式。
start
是一個整數,指定子串的開始位置。
length
是一個整數,指定子串的長度(要返回的字元數或位元組數)。
MAX
返回表達式的最大值。
RIGHT
返回字元串中從右邊開始指定個數的 字元
LEN
返回給定字元串表達式的字元(而不是位元組)個數,其中不包含尾隨空格。
C. sql中count函數的使用
COUNT() 函數返回匹配指定條件的行數。
SQL COUNT(column_name) 語法
COUNT(column_name) 函數返回指定列的值的數目(NULL 不計入):
SELECT COUNT(column_name) FROM table_name;
SQL COUNT(*) 語法
COUNT(*) 函數返回表中的記錄數:
SELECT COUNT(*) FROM table_name;
SQL COUNT(DISTINCT column_name) 語法
COUNT(DISTINCT column_name) 函數返回指定列的不同值的數目:
SELECT COUNT(DISTINCT column_name) FROM table_name;
注釋:COUNT(DISTINCT) 適用於 ORACLE 和 Microsoft SQL Server,但是無法用於 Microsoft Access。
SQL COUNT(column_name) 實例
下面的 SQL 語句計算 "access_log" 表中 "site_id"=3 的總訪問量:
實例
SELECT COUNT(count) AS nums FROM access_log
WHERE site_id=3;
SQL COUNT(*) 實例
下面的 SQL 語句計算 "access_log" 表中總記錄數:
實例
SELECT COUNT(*) AS nums FROM access_log;
執行以上 SQL 輸出結果如下:
D. SQL的SUBSTR 函數的使用方法介紹
SQL的SUBSTR 函數的使用方法介紹
SUBSTR函數是用來截取資料庫某一列欄位中的一部分。
在各個資料庫的函數名稱不一樣(真是蛋疼,後發明的資料庫難道不能同先發明的一樣嗎?)
復制代碼 代碼如下:
MySQL: SUBSTR( ), SUBSTRING( )
Oracle: SUBSTR( )
SQL Server: SUBSTRING( ) ;
常用的方式是:
SBUSTR(str,pos);
就是從pos開始的位置,一直截取到最後。
還有一種比較常用的'是:
復制代碼 代碼如下:
SUBSTR(str,pos,len);
這種表示的意思是,就是從pos開始的位置,截取len個字元(空白也算字元)。
需要注意的是:如果pos為1(而不是0),表示從第一個位置開始。
這點也很好理解,因為資料庫不是我們平時寫程序,他有他自己的一套習慣,資料庫的記錄都是從1開始沒有從0開始。是吧。 ;
E. 如何使用sql函數平均值、總數、最小值、最大值、總和、標准差
avg函數:計算查詢中某一特定欄位資料的算術平均值。
count函數:計算符合查詢條件的記錄數。
min, max函數:傳回指定欄位值中符合查詢條件的第一條、最末條記錄的資料。
first, last函數:傳回指定欄位值中符合查詢條件的最小值、最大值。
stdev函數:計算指定欄位值中符合查詢條件的標准差。
sum函數:計算指定欄位值中符合查詢條件的資料總和。
var,函數:計算指定欄位值中符合查詢條件的變異數估計值。
F. SQL里Round函數如何使用
ROUND() 函數
ROUND() 函數用於把數值欄位舍入為指定的小數位數。
ROUND(X): 返回參數X的四捨五入的一個整數。
ROUND(X,D): 返回參數X的四捨五入的有 D 位小數的一個數字。如果D為0,結果將沒有小數點或小數部分。
注意:ROUND 返回值被變換為一個BIGINT!
SQL ROUND() 語法
-from 樹懶學堂
G. SQL中如何調用一個函數啊
1、首先是找到標量函數,右鍵單擊選擇新建。
H. sql max函數的使用方法
sql max函數的使用方法
在SQL資料庫中,最大/最小值函數—MAX/MIN是經常要用到的。下面我給大家帶來sql max函數的使用方法,歡迎大家閱讀。
sql max函數的使用方法
當需要了解一列中的最大值時,可以使用MAX()函數;同樣,當需要了解一列中的最小值時,可以使用MIN()函數。語法如下。
SELECT MAX (column_name) / MIN (column_name)
FROM table_name
說明:列column_name中的數據可以是數值、字元串或是日期時間數據類型。MAX()/MIN()函數將返回與被傳遞的列同一數據類型的單一值。
實例7 MAX()函數的使用
查詢TEACHER表中教師的最大年齡。實例代碼:
SELECT MAX (AGE) AS MAXAGE
FROM TEACHER
運行結果如圖1示。
圖1TEACHER表中教師的最大年齡
然而,在實際應用中得到這個結果並不是特別有用,因為經常想要獲得的信息是具有最大年齡的教師的教工號、姓名、性別等信息。
然而SQL不支持如下的SELECT語句。
SELECT TNAME, DNAME, TSEX, MAX (AGE)
FROM TEACHER
因為聚合函數處理的是數據組,在本例中,MAX函數將整個TEACHER表看成一組,而TNAME、DNAME和TSEX的數據都沒有進行任何分組,因此SELECT語句沒有邏輯意義。同樣的道理,下面的.代碼也是無效的。
SELECT TNAME, DNAME, TSEX,SAL ,AGE
FROM TEACHER
WHERE AGE=MAX (AGE)
解決這個問題的方法,就是在WHERE子句中使用子查詢來返回最大值,然後再基於這個返回的最大值,查詢相關信息。
實例8 在WHERE子句中使用子查詢返回最大值
查詢TEACHER表中年紀最大的教師的教工號、姓名、性別等信息。
實例代碼:
SELECT TNAME, DNAME, TSEX, SAL, AGE
FROM TEACHER
WHERE AGE=(SELECT MAX (AGE) FROM TEACHER)
運行結果如圖2示。
圖2在WHERE子句中使用子查詢返回最大值
MAX()和MIN()函數不僅可以作用於數值型數據,也可以作用於字元串或是日期時間數據類型的數據。
實例MAX()函數用於字元型數據
如下面代碼:
SELECT MAX (TNAME) AS MAXNAME
FROM TEACHER
運行結果如圖3示。
圖3在字元串數據類型中使用MAX的結果
可見,對於字元串也可以求其最大值。
說明
對字元型數據的最大值,是按照首字母由A~Z的順序排列,越往後,其值越大。當然,對於漢字則是按照其全拼拼音排列的,若首字元相同,則比較下一個字元,以此類推。
當然,對與日期時間類型的數據也可以求其最大/最小值,其大小排列就是日期時間的早晚,越早認為其值越小,如下面的實例。
實例 MAX()、MIN()函數用於時間型數據
從COURSE表中查詢最早和最晚考試課程的考試時間。其中COURSE表的結構和數據可參見本書6.1節的表6-1。實例代碼:
SELECT MIN (CTEST) AS EARLY_DATE,
MAX (CTEST) AS LATE_DATE
FROM COURSE
運行結果如圖4示。
圖4COURSE表中最早和最晚考試課程的考試時間
可見,返回結果的數據類型與該列定義的數據類型相同。
注意
確定列中的最大值(最小值)時,MAX( )(MIN( ))函數忽略NULL值。但是,如果在該列中,所有行的值都是NULL,則MAX( )/MIN( )函數將返回NULL值。
;I. 第三十八章 SQL函數 CURTIME
返回當前本地時間的標量日期/時間函數。
``不接受任何參數。它將當前本地時間作為數據類型 TIME 返回。請注意,參數括弧是可選的。 CURTIME 返回此時區的當前本地時間;它根據本地時間變數(如夏令時)進行調整。
邏輯模式下的 CURTIME 以 $HOROLOG 格式返回當前本地時間;
例如, 37065 年。
顯示模式下的 CURTIME 以區域設置的默認格式返回當前本地時間;
例如, 10:18:27 。
小時以 24 小時格式表示。
要更改默認的時間格式,使用 SET OPTION 命令和 TIME_FORMAT 和 TIME_PRECISION 選項。
要只返回當前時間,請使用 CURTIME 或 CURRENT_TIME 。
這些函數以 TIME 數據類型返回它們的值。
CURRENT_TIMESTAMP 、 GETDATE 和 NOW 函數也可以作為 TIMESTAMP 數據類型返回當前日期和時間。
請注意,除了 GETUTCDATE 之外,所有 SQL時間和日期函數都特定於當地時區設置。
要獲得通用的(獨立於時區的)當前時間戳,你可以使用 GETUTCDATE 或ObjectScript $ZTIMESTAMP 特殊變數。
在使用嵌入式SQL時,這些數據類型的性能不同。
TIME 數據類型將值存儲為 $HOROLOG 格式的整數(從午夜開始的秒數);
在SQL中顯示時,轉換為時間顯示格式;
當從嵌入式SQL返回時,它們作為整數返回。
TIMESTAMP 數據類型以相同的格式存儲和顯示其值。
可以使用 CAST 或 CONVERT 函數來更改時間和日期的數據類型。
下面的例子都返回當前系統時間:
下面的嵌入式SQL示例返回當前時間。
因為這個時間是以 $HOROLOG 格式存儲的,所以它被返回為一個整數:
下面的例子將 Contacts 表中選中行的 LastCall 欄位設置為當前系統時間:
J. SQL語句整理——函數篇
函數是大牛封裝好的程序,一些函數經過時間的沉澱和不斷地被開發運用,變得十分的精巧和實用。
函數讓人不再糾結於底層的邏輯,就像『遙控器』或者說類似於數學中的抽象概念一樣,在數學中運用定理,很多時候不需要一步步推導出定理(當然能推導的都是大牛。),我們在學習過程中,很多時候也不用糾結『如果不懂底層的邏輯成為不了高手』這樣到處可見的言論,只管做,體會就行了,當有需要的時候,自然會了解底層的東西,順其自然就行(自勉哈哈)。
聚合函數就是常見的匯總函數:SUM 求和,AVG平均(相當於average),MAX最大,MIN最小,COUNT平均等。
打開EXCEL數據→現有連接
點擊recent
相當於if函數,最多能嵌套14層。
IIF(條件,true,false)
給語文成績大於90的人發小紅花
它是一個取整函數。
根據第一參數的結果,在後面參數對應位置給出結果。
如果表達式結果有小數則取整。
在實際運用中choose函數還是比較小眾的。
下面的例子有些意思,統計生肖的人數。需要做到數據透視表中。
left 從左到右提取字元
right 從右向左提取字元
語法結構 mid(字元串,提取的起始位置,提取的長度)
根據身份證號判斷性別
身份證號有的是15位有的是18位,是15位的最後一位代表性別,18位的第十七位代表性別。那麼取出第15位到第17位的數字求余,就能滿足條件。
字元串長度提取。
INSTR函數與工作表函數FIND類似,只是參數位置略有區別:
INSTR([查找的起始位置](可省略),查找區域,查找關鍵字)
FIND(查找的關鍵字,查找的區域,查找的起始位置(可省略))
我們想要把市名提取出來
REPLACE(查找的區域,查找的內容,替換內容)
相當於在工作表中按CTRL+F替換的功能。
拆分出生年月日
我們可以用group by 和聚合函數進行各種匯總,但是想對匯總結果進行進一步的條件篩選,這時就用到having語句,having語句與where條件語句基本類似,不過它是針對group by匯總後的進行的條件篩選。
需要篩選匯總出農作物總產量大於10000數據。