.Net程式員學用Oracle系列(9):系統函數(上)

来源:http://www.cnblogs.com/hanzongze/archive/2017/01/13/Oracle-SystemFunction1.html
-Advertisement-
Play Games

《.Net程式員學用Oracle系列:導航目錄》 本文大綱 1、 " 字元函數 " 1.1、 "字元函數簡介" 1.2、 "語法說明及案例" 2、 " 數字函數 " 2.1、 "數字函數簡介" 2.2、 "語法說明及案例" 3、 " 日期函數 " 3.1、 "日期函數簡介" 3.2、 "語法說明及案 ...


《.Net程式員學用Oracle系列:導航目錄》

本文大綱

眾所周知,Oracle 中系統函數特別多,貌似有好幾百個,但實際上大部分函數對於普通應用而言,永遠都用不到,本文將主要介紹 Oracle 中常見的數據類型函數。

字元函數

字元函數簡介

據不完全統計,Oracle 中的字元函數總計約 40 個,主要功能包括:編解碼、字元集轉換、類型轉換、檢索、替換、連接、填充、統計等。可謂是功能強大、數量繁多,但相當一部分對於大多數應用來說都不大可能會用到,本節只簡要介紹我本人認為比較實用的 23 個字元函數。函數名及語法如下:

序號 函數名 語法原型 常用
1 ASCII ASCII( single_character ) ×
2 ASCIISTR ASCIISTR( string ) ×
3 CHR CHR( number_code ) ×
4 CONCAT CONCAT( string1, string2 ) ×
5 Concat with || string1 || string2 [|| string_n ]
6 CONVERT CONVERT( string1, char_set_to [, char_set_from] ) ×
7 DUMP DUMP( expression [, return_format] [, start_position] [, length] ) ×
8 INITCAP INITCAP( string1 ) ×
9 INSTR INSTR( string, substring [, start_position [, th_appearance ] ] )
10 LENGTH LENGTH( string1 )
11 LENGTHB LENGTHB( string1 ) ×
12 LOWER LOWER( string1 )
13 LPAD LPAD( string1, padded_length [, pad_string] ) ×
14 LTRIM LTRIM( string1 [, trim_string] )
15 NCHR NCHR(number_code) ×
16 REPLACE REPLACE( string1, string_to_replace [, replacement_string] )
17 RPAD RPAD( string1, padded_length [, pad_string] ) ×
18 RTRIM RTRIM( string1 [, trim_string ] ) ×
19 SUBSTR SUBSTR( string, start_position [, length ] )
20 TRANSLATE TRANSLATE( string1, string_to_replace, replacement_string ) ×
21 TRIM TRIM( [ [ LEADING | TRAILING | BOTH ] trim_character FROM ] string1 )
22 UPPER UPPER( string1 )
23 VSIZE VSIZE( expression ) ×

語法說明及案例

ASCII:返回指定字元的 ASCII 碼。示例:

SELECT ASCII('A') res FROM DUAL;   -- res:65
SELECT ASCII('ABC') res FROM DUAL; -- res:65

ASCIISTR:返回指定字元串的 ASCII 碼形式的字元串,非 ASCII 字元會被轉化成 \xxxx 的形式(有網友示範了根據這個規律來識別中文字元,應該說這是個很好的思路,但不夠嚴謹)。示例:

SELECT ASCIISTR('Oracle 資料庫') res FROM DUAL; -- res:'Oracle \6570\636E\5E93'

CHR & NCHR:返回指定 ASCII 碼所代表的字元。CHR( number_code USING NCHAR_CS )NCHR 的轉換效果相同。示例:

SELECT CHR(65) res FROM DUAL;                   -- res:'A'
SELECT CHR(30000) res FROM DUAL;                -- res:'u0',註意與下兩行做對比
SELECT NCHR(30000) res FROM DUAL;               -- res:'田'
SELECT CHR(30000 USING NCHAR_CS) res FROM DUAL; -- res:'田'

CONCAT & ||:將多個字元串連接成一個新的字元串並返回。由於 CONCAT 一次只能連接兩個字元串,當要連接多個字元串時,就需要嵌套,既繁瑣又不易閱讀。事實上稍有經驗的開發人員從不用 CONCAT 函數,因為實際開發中經常需要連接多個字元串,這類需求用 || 來實現效果要好得多。示例:

SELECT CONCAT('A','B') res FROM DUAL;             -- res:'AB'
SELECT CONCAT('A',CONCAT('B','C')) res FROM DUAL; -- res:'ABC'
SELECT 'A'||'B'||'C' res FROM DUAL;               -- res:'ABC'

CONVERT:將指定字元串從一種字元集轉換為另一種字元集,並返迴轉換後的字元串。可用的字元集有:US7ASCII、WE8DEC、WE8HP、F7DEC、WE8EBCDIC500、WE8PC850、WE8ISO8859P1。這也許是 Oracle 中最坑的函數,因為一般編程語言或資料庫中,叫這個名字的函數往往都是用來轉換數據類型的,結果在 Oracle 中卻是用來轉換字元集的。示例:

SELECT CONVERT('Oracle','we8hp','f7dec') res FROM DUAL; -- res:Oracle

DUMP:將指定字元串按指定進位返回。示例:

SELECT DUMP('Tech') res FROM DUAL;      -- res:'Typ=96 Len=4: 84,101,99,104'
SELECT DUMP('Tech',10) res FROM DUAL;   -- res:'Typ=96 Len=4: 84,101,99,104'
SELECT DUMP('Tech',16) res FROM DUAL;   -- res:'Typ=96 Len=4: 54,65,63,68'
SELECT DUMP('Tech',1016) res FROM DUAL; -- res:'Typ=96 Len=4 CharacterSet=ZHS16GBK: 54,65,63,68'
SELECT DUMP('Tech',1017) res FROM DUAL; -- res:'Typ=96 Len=4 CharacterSet=ZHS16GBK: T,e,c,h'

INITCAP:返回指定字元串的帕斯卡命名(即每個單詞首字母都大寫)副本。示例:

SELECT INITCAP('asp.net core') res FROM DUAL; -- res:'Asp.Net Core'

INSTR:返回第二個字元串在第一個字元串中出現的位置,可通過起始位置和長度來限定查找範圍。示例:

SELECT INSTR('Database','a',1,1) res FROM DUAL; -- res:2,第 1 次出現 a 的位置是 2
SELECT INSTR('Database','a',1,2) res FROM DUAL; -- res:4,第 2 次出現 a 的位置是 4
SELECT INSTR('Database','a',1,3) res FROM DUAL; -- res:6,第 3 次出現 a 的位置是 6
SELECT INSTR('Database','a',1,4) res FROM DUAL; -- res:0,第 4 次 a 沒出現,所以是 0
SELECT INSTR('Database','a',3) res FROM DUAL;   -- res:4,從第 3 個字母開始,第 1 次出現 a 的位置是 4
SELECT INSTR('Database','a',5) res FROM DUAL;   -- res:6,從第 5 個字母開始,第 1 次出現 a 的位置是 6
SELECT INSTR('Database','a') res FROM DUAL;     -- res:2,第 1 個字母開始,第 1 次出現 a 的位置是 2
SELECT INSTR('Database','A') res FROM DUAL;     -- res:0,註意與上一行結果對比

LENGTH:返回指定字元串的長度。示例:

SELECT LENGTH(NULL) res FROM DUAL;           -- res:NULL
SELECT LENGTH('') res FROM DUAL;             -- res:NULL
SELECT LENGTH(' ') res FROM DUAL;            -- res:1
SELECT LENGTH('Asp.Net Core') res FROM DUAL; -- res:12
SELECT LENGTH('資料庫') res FROM DUAL;        -- res:3

LENGTHB & VSIZE:返回指定字元串的位元組數。經測試發現這兩個函數的用法一樣,結果也一樣,示例:

SELECT LENGTHB(NULL) res FROM DUAL;           -- res:NULL
SELECT LENGTHB('') res FROM DUAL;             -- res:NULL
SELECT LENGTHB(' ') res FROM DUAL;            -- res:1
SELECT LENGTHB('Asp.Net Core') res FROM DUAL; -- res:12
SELECT LENGTHB('資料庫') res FROM DUAL;        -- res:6

LOWER & UPPER:返回指定字元串的小寫或大寫副本,示例:

SELECT LOWER('Data Base') res FROM DUAL; -- res:'data base'
SELECT UPPER('Data Base') res FROM DUAL; -- res:'DATA BASE'

LPAD & RPAD:如果不使用 CHAR/NCHAR 類型,也不大可能會用到這兩個函數。它們的作用就是通過填充或截取,使得指定字元串達到指定長度,可以指定要用來填充的字元。示例:

SELECT LPAD('ABC',2) res FROM DUAL;      -- res:'AB'
SELECT LPAD('ABC',4) res FROM DUAL;      -- res:' ABC'
SELECT LPAD('ABC',4,'$') res FROM DUAL;  -- res:'$ABC'

LTRIM & RTRIM & TRIM:返回指定字元串去掉左邊、右邊或兩邊空格後的字元串。這個太簡單就不提供示例代碼了。實際上這 3 個函數都還有更高級的用法,分別如下:

TRIM(leading|trailing|both substr from srcstr):返回將 srcstr 字元串中的指定的 substr 字元去除後的字元串,其中 substr 只能是一個字元,否則直接語法報錯,leading|trailing|both 分別指定將 srcstr 字元串中前面|後面|前後所有的 substr 字元去除。示例:

SELECT TRIM(leading 'a' FROM 'aaAaAaa') res FROM DUAL;  -- res:'AaAaa'
SELECT TRIM(trailing 'a' FROM 'aaAaAaa') res FROM DUAL; -- res:'aaAaA'
SELECT TRIM(both 'a' FROM 'aaAaAaa') res FROM DUAL;     -- res:'AaA'

LTRIM(str1,str2)RTRIM(str1,str2):都將從 str1 字元串中去找 str2 中包含的字元,如果找到了就去除,如果出現多次都會被去除,但前提是 str2 字元串中第一個字元與 str1 字元串中第一個字元相同(rtrim 函數是與 str1 字元串中最後一個字元相同),返回最後剩下的字元串。示例:

SELECT LTRIM('ABABA','A') res FROM DUAL;  -- res:'BABA'
SELECT LTRIM('ABABA','B') res FROM DUAL;  -- res:'ABABA'
SELECT LTRIM('ABABA','AB') res FROM DUAL; -- res:NULL
SELECT LTRIM('ABABA','BA') res FROM DUAL; -- res:NULL
SELECT LTRIM('ABABA','AC') res FROM DUAL; -- res:'BABA'
SELECT LTRIM('ABABA','BC') res FROM DUAL; -- res:'ABABA'

REPLACE:返回指定字元串被替換後的結果字元串。如果不指定替換字元串,將直接把原字元串中要替換的字元串刪除。示例:

SELECT REPLACE('ABCABC','B','D') res FROM DUAL; -- res:'ADCADC'
SELECT REPLACE('ABCABC','B') res FROM DUAL;     -- res:'ACAC'
SELECT REPLACE('ABCABC','b') res FROM DUAL;     -- res:'ABCABC'(註意跟上一行結果做對比)

SUBSTR:返回從指定字元串中指定位置開始往後指定長度的字元串。如果不指定長度就會截取到字元串末尾為止;開始截取的位置必須指定,可以指定負數,負數時就會從後往前截取,指定 0 的效果與指定 1 的效果是一樣的;如果起始位置值的絕對值大於字元串長度,返回值是 NULL。示例:

SELECT SUBSTR('ABCD',1,2) res FROM DUAL; -- res:'AB'
SELECT SUBSTR('ABCD',2,2) res FROM DUAL; -- res:'BC'
SELECT SUBSTR('ABCD',2) res FROM DUAL;   -- res:'BCD'
SELECT SUBSTR('ABCD',-2) res FROM DUAL;  -- res:'CD'
SELECT SUBSTR('ABCD',0) res FROM DUAL;   -- res:'ABCD'
SELECT SUBSTR('ABCD',1) res FROM DUAL;   -- res:'ABCD'
SELECT SUBSTR('ABCD',5) res FROM DUAL;   -- res:空
SELECT SUBSTR('ABCD',-5) res FROM DUAL;  -- res:空

TRANSLATE:返回指定字元串被替換後的結果字元串。示例:

SELECT TRANSLATE('1tech23', '123', '456') res FROM DUAL; -- res:4tech56
SELECT TRANSLATE('222tech', '2ec', '3it') res FROM DUAL; -- res:333tith

數字函數

數字函數簡介

據不完全統計,Oracle 中的數字函數總計約 40 個,包含大量三角函數、指數函數、對數函數、進位轉換函數、類型轉換函數、近似值函數、聚合函數等數學函數。可謂是種類繁多,但大部分對於大多數應用來說都不太常用,其中類型轉換函數、近似值函數、聚合函數將在後續文章中介紹,本節只簡要介紹除此之外,我本人認為比較實用的 8 個數字函數。函數名及語法如下:

序號 函數名 語法原型 常用
1 ABS ABS( number )
2 CEIL CEIL( number )
3 FLOOR FLOOR( number )
4 GREATEST GREATEST( expr1 [, expr2, ... expr_n] ) ×
5 LEAST LEAST( expr1 [, expr2, ... expr_n] ) ×
6 MOD MOD( m, n ) ×
7 POWER POWER( m, n ) ×
8 SIGN SIGN( number ) ×

語法說明及案例

ABS:返回指定數字的絕對值。示例:

SELECT ABS(3888) res FROM DUAL;       -- res:3888
SELECT ABS(-3888) res FROM DUAL;      -- res:3888
SELECT ABS(23.65) res FROM DUAL;      -- res:23.65
SELECT ABS(23.65 * -1) res FROM DUAL; -- res:23.65

CEIL:返回大於或等於指定數字的最大整數。示例:

SELECT CEIL(1.4) res FROM DUAL;  -- res:2
SELECT CEIL(1.5) res FROM DUAL;  -- res:2
SELECT CEIL(-1.5) res FROM DUAL; -- res:-1

FLOOR:返回小於或等於指定數字的最小整數。示例:

SELECT FLOOR(1.4) res FROM DUAL;  -- res:1
SELECT FLOOR(1.5) res FROM DUAL;  -- res:1
SELECT FLOOR(-1.5) res FROM DUAL; -- res:-2

GREATEST:返回參數列表中值最大的一項。參數既可以為數字,也可以是字元串,如果參數列表數據類型不一致會自動轉型。示例:

SELECT GREATEST(2, 5, 12, 3) res FROM DUAL;                    -- res:12
SELECT GREATEST('2', '5', '12', '3') res FROM DUAL;            -- res:'5'
SELECT GREATEST('apples', 'oranges', 'bananas') res FROM DUAL; -- res:'oranges'
SELECT GREATEST('apples', 'applis', 'applas') res FROM DUAL;   -- res:'applis'

LEAST:返回參數列表中值最小的一項。與 GREATEST 用法相同,結果相反。示例:

SELECT LEAST(2, 5, 12, 3) res FROM DUAL;                    -- res:2
SELECT LEAST('2', '5', '12', '3') res FROM DUAL;            -- res:'12'
SELECT LEAST('apples', 'oranges', 'bananas') res FROM DUAL; -- res:'apples'
SELECT LEAST('apples', 'applis', 'applas') res FROM DUAL;   -- res:'applas'

MOD:返回第一個參數除以第二個參數後的餘數。示例:

SELECT MOD(15,4) res FROM DUAL;      -- res:3
SELECT MOD(15,0) res FROM DUAL;      -- res:15
SELECT MOD(11.6, 2) res FROM DUAL;   -- res:1.6
SELECT MOD(11.6, 2.1) res FROM DUAL; -- res:1.1
SELECT MOD(-15, 4) res FROM DUAL;    -- res:-3
SELECT MOD(-15, 0) res FROM DUAL;    -- res:-15

POWER:返回第一個參數的第二個參數次方。示例:

SELECT POWER(5, 3) res FROM DUAL;    -- res:125
SELECT POWER(-5, 3) res FROM DUAL;    -- res:-125
SELECT POWER(6.2, 3) res FROM DUAL;   -- res:238.328
SELECT POWER(6.2, 3.5) res FROM DUAL; -- res:593.431934277892

SIGN:如果指定數字等於 0,則返回 0,如果大於 0,則返回 1,如果小於 0,則返回 -1。示例:

SELECT SIGN(0) res FROM DUAL;  -- res:0
SELECT SIGN(5) res FROM DUAL;  -- res:1
SELECT SIGN(-5) res FROM DUAL; -- res:-1

日期函數

日期函數簡介

據不完全統計,Oracle 中的日期函數總計約 20 個,主要是對日期的年、月、日、小時、分、秒等部分的操作和運算,還有取系統時間、會話時區等函數。對於普通應用而言,其中一大部分函數都不太常用,日期轉型函數將在下一篇文章中介紹,本節只簡要介紹我本人認為比較實用的 6 個日期函數。函數名及語法如下:

序號 函數名 語法原型 常用
1 ADD_MONTHS ADD_MONTHS( date1, number_months )
2 LAST_DAY LAST_DAY( date )
3 MONTHS_BETWEEN MONTHS_BETWEEN( date1, date2 ) ×
4 NEXT_DAY NEXT_DAY( date, weekday ) ×
5 SYSDATE SYSDATE
6 SYSTIMESTAMP SYSTIMESTAMP ×

語法說明及案例

ADD_MONTHS:返回在指定日期基礎上再加指定個月後的日期。由於增加一個月往往不像增加 28~31 天那麼簡單,為了便於增加月,Oracle 專門實現了這樣一個函數。示例:

SELECT ADD_MONTHS(fn_now,1) res FROM DUAL;  -- res:2017-02-10 19:21:30
SELECT ADD_MONTHS(fn_now,-1) res FROM DUAL; -- res:2016-12-10 19:21:30

LAST_DAY:返回指定日期所在月份最後一天的日期,如果是長日期,返回日期的時間部分就是指定日期的時間部分。示例:

SELECT LAST_DAY(fn_today) res FROM DUAL; -- res:2017-01-31
SELECT LAST_DAY(fn_now) res FROM DUAL;   -- res:2017-01-31 19:21:30

MONTHS_BETWEEN:返回第一個日期參數減去第二個日期參數的結果,長日期會忽略時間部分,第一個日期大於第二個日期時返回正數,第一個日期小於第二個日期時返回負數,兩個日期相同時返回 0,天數不同時返回小數。

SELECT MONTHS_BETWEEN(fn_today,TO_DATE('2016-10-10','yyyy-mm-dd')) res FROM DUAL; -- res:3
SELECT MONTHS_BETWEEN(fn_today,TO_DATE('2017-02-10','yyyy-mm-dd')) res FROM DUAL; -- res:-1

NEXT_DAY:返回指定日期之後的下一個星期幾,假如指定日期是星期六,那指定日期之後下一個星期日就是當周的周日,而指定日期之後下一個星期一就是下周的周一,第二個參數的取值可能是:{'Sunday'/'Mondy'/'Tuesday'/'Wednesday'/'Thursday'/'Friday'/'Saturday'},也可能是:{'星期日'/'星期一'/'星期二'……}或{1/2/3……6/7},取決於你操作系統的本地語言支持。示例:

SELECT fn_today res FROM DUAL;                    -- res:2017-01-10
SELECT NEXT_DAY(fn_today,'Sunday') res FROM DUAL; -- res:2017-01-15
SELECT NEXT_DAY(fn_today,'Monday') res FROM DUAL; -- res:2017-01-16

SYSDATE & SYSTIMESTAMP:返回當前系統時間,SYSTIMESTAMP 的返回值還包含 6 位的小數秒和時區。示例:

SELECT SYSDATE res FROM DUAL;                                          -- res:2017-01-13 21:42:20
SELECT SYSTIMESTAMP res FROM DUAL;                                     -- res:13-1月 -17 09.40.34.235000 下午 +08:00
SELECT TO_CHAR(SYSTIMESTAMP,'yyyy-mm-dd hh24:mi:ss.ff') res FROM DUAL; -- res:2017-01-13 21:42:33.266000

日期函數補充

INTERVAL:返回變動後的日期。示例:

SELECT fn_now+(INTERVAL '1' SECOND) res FROM DUAL;             -- res:2017-01-10 19:21:31,加 1 秒鐘
SELECT fn_now+(INTERVAL '1' MINUTE) res FROM DUAL;             -- res:2017-01-10 19:22:30,加 1 分鐘
SELECT fn_now+(INTERVAL '1' HOUR) res FROM DUAL;               -- res:2017-01-10 20:21:30,加 1 小時
SELECT fn_now+(INTERVAL '1' DAY) res FROM DUAL;                -- res:2017-01-11 19:21:30,加 1 天
SELECT fn_now+(INTERVAL '1' MONTH) res FROM DUAL;              -- res:2017-02-10 19:21:30,加 1 個月
SELECT fn_now+(INTERVAL '1' YEAR) res FROM DUAL;               -- res:2018-01-10 19:21:30,加 1 年
SELECT fn_now+(INTERVAL '1:1:1' HOUR TO SECOND) res FROM DUAL; -- res:2017-01-10 20:22:31,加指定時間

NUMTOYMINTERVAL(d,c):將 d 轉換為 INTERVAL YEAR TO MONTH 類型,c 的常見取值有 'year'|'month'。

SELECT fn_today+NUMTOYMINTERVAL(3,'year') res FROM DUAL; -- res:2020-01-10,加 3 年

NUMTODSINTERVAL(d,c):將 d 轉換為 INTERVAL DAY TO SECOND 類型,c 的常見取值有 'day'|'hour'|'minute'|'second'。

SELECT fn_today+NUMTODSINTERVAL(3,'day') res FROM DUAL; -- res:2017-01-13,加 3 天

總結

本文主要介紹了常見的字元函數、數字函數和日期函數,其中部分函數在使用的時候需要註意操作系統的本地語言支持(NLS/Native Language Support),可以通過設置 NLS_LANG 環境變數來改變系統的本地語言支持。

《.Net程式員學用Oracle系列:導航目錄》

本文聲明:如果您認為這篇文章還可以或對您有幫助,請點擊文章末尾的“推薦”按鈕。歡迎轉載、演繹或用於商業目的,但必須保留本文的署名韓宗澤,並且要在明顯位置給出原文鏈接!本人初寫博客,水平有限,若有不當之處,敬請批評指正,謝謝!



您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 資料庫版本 SQL SERVER 2012 企業版,版本號:11.0.5582.0 問題場景: 資料庫配置Alwayson環境,同機房2節點同步自動切換+跨機房非同步,在非同步機房中選取同一節點做完整備份和日誌備份,完整備份為COPY_ONLY方式,完整備份從0:35開始至1:40成功結束,日誌備份從0 ...
  • 金蝶KIS專業版 替換SXS.dll 遭後門清空數據(憑證被改為:恢複數據聯繫QQ 735330197,2251434429)恢復解決方法。 【客戶名稱】:山東青島福隆發紡織品有限公司 【軟體名稱】:金蝶KIS專業版12.2 【資料庫版本】:MS SQL server 2000 【資料庫大小】:1G ...
  • 這裡為百度經驗 http://jingyan.baidu.com/article/ff42efa93580c4c19e2202b6.html 然而在最後一步,回車不能夠越過密碼。 需要在解壓的mysq文件下的data文件下找到Acer.err,用記事本打開, Crtl+H查找 A temporary ...
  • 《.Net程式員學用Oracle系列:導航目錄》 本文大綱 1、 " 轉換函數 " 1.1、 "TO_CHAR" 1.2、 "TO_NUMBER" 1.3、 "TO_DATE" 1.4、 "CAST" 2、 " 近似值函數 " 2.1、 "ROUND" 2.2、 "TRUNC" 3、 " 正則函數 ...
  • 程式控制台出現 already exist Table "xxx",是由於項目中的Migrations(遷移文件)與連接的mysql資料庫里遷移記錄表裡的數量及名稱不一致。 ...
  • 數據持久化是還原的前提,沒有數據的持久化,就無法還原記憶體優化表的數據,SQL Server In-Memory OLTP的記憶體數據能夠持久化存儲,這意味著記憶體數據能夠在SQL Server實例重啟之後自動還原。在創建持久化的記憶體優化表時,必須設置選項:memory_optimized=on,dura ...
  • getdate():當前系統日期與時間 DATEADD(DAY,5,GETDATE()):當前日期的基礎上加上x天 DATEDIFF(DAY,'2017-01-02','2017-01-13'):返回指定的兩個日期與時間的邊界數 DATEPART(MONTH,GETDATE()):返回當前指定日期的 ...
  • 經過一段時間的學習,完成了新聞發佈的基礎功能,進行一點小總結,方便日後回顧。下麵是我的一點小總結,不足之處請勿見笑。。。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...