SQL函数学习笔记

regexp_replace

regexp_replace是一个SQL函数,用于将一个字符串中匹配正则表达式的部分替换为另一个字符串。它有一种用法:

  • REGEXP_REPLACE(source, pattern, replace [, position [, occurrence [, match_param ] ] ] ):返回一个字符串,将字符串source中从位置position开始的第occurrence个匹配正则表达式pattern的部分替换为字符串replace。这个函数支持Oracle。¹

例如,下面的查询将一个字符串中的数字用星号替换:

SELECT REGEXP_REPLACE('My phone number is 123-456-7890', '\d', '*') AS Result FROM DUAL;

这个查询返回了My phone number is ***-***-****

下面的查询将一个字符串中的第二个单词用大写字母替换:

SELECT REGEXP_REPLACE('Hello world', '(\w+)', UPPER('\1'), 1, 2) AS Result FROM DUAL;

这个查询返回了Hello WORLD

更多关于regexp_replace的信息,请参考:
(1) SQL REGEXP_REPLACE() Function - Way2tutorial. https://way2tutorial.com/sql/sql-regexp_replace-function.php.
(2) REGEXP_REPLACE - Oracle Help Center. https://docs.oracle.com/en/database/oracle/oracle-database/18/sqlrf/REGEXP_REPLACE.html.
(3) Perform regex (replace) in an SQL query - Stack Overflow. https://stackoverflow.com/questions/150977/perform-regex-replace-in-an-sql-query.

substr

substr是一个SQL函数,用于从一个字符串中截取一部分子字符串。它有一种用法:

  • SUBSTR(string, start, length):返回一个字符串,从字符串string的位置start开始,截取长度为length的子字符串。这个函数支持MySQL、Oracle等数据库。¹³
参数描述
string必需。要从中提取的字符串
start必需。起始位置。 可以是正数或负数。 如果是正数,则此函数从字符串的开头提取。 如果是负数,此函数从字符串的末尾提取
length可选。要提取的字符数。 如果省略,将返回整个字符串(从 start 位置开始)

例如,下面的查询从一个字符串中截取前三个字符:

SELECT SUBSTR('SQL Tutorial', 1, 3) AS Result FROM DUAL;

这个查询返回了SQL

下面的查询从一个字符串中截取最后两个字符:

SELECT SUBSTR('SQL Tutorial', -2, 2) AS Result FROM DUAL;

这个查询返回了al

更多关于substr的信息,请参考:
Source: Conversation with Bing, 9/7/2023
(1) MySQL SUBSTR() Function - W3Schools. https://www.w3schools.com/sql/func_mysql_substr.asp.
(2) SQL SUBSTRING 函數 - 1Keydata SQL語法教學. https://www.1keydata.com/tw/sql/sql-substring.html.
(3) SUBSTRING (Transact-SQL) - SQL Server | Microsoft Learn. https://learn.microsoft.com/en-us/sql/t-sql/functions/substring-transact-sql?view=sql-server-ver16.
(4) SUBSTR Function in SQL - javatpoint. https://www.javatpoint.com/substr-function-in-sql.
(5) SQL SUBSTRING() - SQL. https://sql.sh/fonctions/substring.

trunc

trunc是一个SQL函数,用于截断一个日期。

  • TRUNC(date, fmt):返回一个日期,将日期的时间部分截断到由格式模型fmt指定的单位。这个函数不受会话参数NLS_CALENDAR的影响,按照公历的规则操作。返回值总是DATE类型,即使你为日期指定了不同的日期时间类型。如果你省略了fmt,那么默认的格式模型是'DD',返回值是日期截断到当天的午夜。¹

例如,下面的查询将一个日期截断到年份:

SELECT TRUNC (TO_DATE ('27-OCT-92','DD-MON-YY'), 'YEAR')  "New Year" FROM DUAL;

这个查询返回了01-JAN-92

更多关于TRUNC的信息,请参考:
(1) TRUNC (date) - Oracle Help Center.

posexplode

posexplode是一个表值生成器函数,用于将一个数组或映射展开成一组行,每行包含数组或映射的元素和位置。它有两种用法:

  • posexplode(expr):返回一组行,将expr的时间部分展开到由格式模型fmt指定的单位。这个函数支持Azure Databricks和Databricks Runtime。¹²

  • posexplode(ARRAY<T> a):返回一组行,将数组a的元素和位置展开。这个函数支持Spark SQL。³

例如,下面的查询将一个数组展开成一组行,每行包含数组的元素和位置:

SELECT pos, col FROM posexplode(array(10, 20));

这个查询返回了:

poscol
010
120

下面的查询将一个映射展开成一组行,每行包含映射的键、值和位置:

SELECT pos, key, value FROM posexplode(map(10, 'a', 20, 'b'));

这个查询返回了:

poskeyvalue
010a
120b

更多关于posexplode的信息,请参考:
(1) posexplode table-valued generator function - Azure Databricks … https://learn.microsoft.com/en-us/azure/databricks/sql/language-manual/functions/posexplode.
(2) posexplode table-valued generator function | Databricks on AWS. https://docs.databricks.com/en/sql/language-manual/functions/posexplode.html.
(3) Implementing Spark posexplode() equivalent in the serverless SQL pool … https://techcommunity.microsoft.com/t5/azure-synapse-analytics-blog/implementing-spark-posexplode-equivalent-in-the-serverless-sql/ba-p/3224698.

timefrom

timefrom是一个SQL函数,用于根据指定的时间和精度返回一个时间值。它有一种用法:

  • TIMEFROMPARTS(hour, minute, seconds, fractions, precision):返回一个时间值,将小时、分钟、秒、分数和精度组合成一个时间。这个函数支持SQL Server、Azure SQL Database、Azure SQL Managed Instance、Azure Synapse Analytics和Analytics Platform System (PDW)。¹

例如,下面的查询返回一个时间值,将23小时、59分钟、59秒、0分数和0精度组合成一个时间:

SELECT TIMEFROMPARTS(23, 59, 59, 0, 0) AS Time;

这个查询返回了23:59:59

下面的查询返回一个时间值,将14小时、23分钟、44秒、500分数和3精度组合成一个时间:

SELECT TIMEFROMPARTS(14, 23, 44, 500, 3) AS Time;

这个查询返回了14:23:44.500

更多关于timefrom的信息,请参考:

(1) TIMEFROMPARTS (Transact-SQL) - SQL Server | Microsoft Learn. https://learn.microsoft.com/en-us/sql/t-sql/functions/timefromparts-transact-sql?view=sql-server-ver16.
(2) MySQL TIME() Function - W3Schools. https://www.w3schools.com/SQL/func_mysql_time.asp.
(3) SQL Server TIMEFROMPARTS() Function By Examples. https://www.sqlservertutorial.net/sql-server-date-functions/sql-server-timefromparts/.

split

split是一个SQL函数,用于将一个字符串按照指定的分隔符分割成多个子字符串。它有一种用法:

  • STRING_SPLIT(string, separator):返回一个表值,将字符串string按照分隔符separator分割成多个子字符串。这个函数支持SQL Server 2016 (13.x)及更高版本、Azure SQL Database、Azure SQL Managed Instance、Azure Synapse Analytics和Analytics Platform System (PDW)。¹

例如,下面的查询将一个字符串按照空格分割成多个单词:

SELECT value FROM STRING_SPLIT('Hello John Smith', ' ');

这个查询返回了:

value
Hello
John
Smith

更多关于split的信息,请参考:
(1) STRING_SPLIT (Transact-SQL) - SQL Server | Microsoft Learn. https://learn.microsoft.com/en-us/sql/t-sql/functions/string-split-transact-sql?view=sql-server-ver16.
(2) sql - How do I split a delimited string so I can access individual … https://stackoverflow.com/questions/2647/how-do-i-split-a-delimited-string-so-i-can-access-individual-items.
(3) STRING_SPLIT (Transact-SQL) - SQL Server | Microsoft Learn. https://learn.microsoft.com/es-es/sql/t-sql/functions/string-split-transact-sql?view=sql-server-ver16.
(4) How to Split a String in SQL Server | LearnSQL.com. https://learnsql.com/cookbook/how-to-split-a-string-in-sql-server/.
(5) STRING_SPLIT (Transact-SQL) - SQL Server | Microsoft Learn. https://learn.microsoft.com/it-it/sql/t-sql/functions/string-split-transact-sql?view=sql-server-ver16.

repeat

repeat是一个SQL函数,用于将一个字符串重复多次。它有两种用法:

  • REPEAT(string, count):返回一个字符串,将字符串string重复count次。这个函数支持MySQL。¹

  • REPLICATE(string, count):返回一个字符串,将字符串string重复count次。这个函数支持SQL Server、Azure SQL Database、Azure SQL Managed Instance、Azure Synapse Analytics和Analytics Platform System (PDW)。²

例如,下面的查询将一个字符串重复3次:

SELECT REPEAT('SQL Tutorial', 3);

或者

SELECT REPLICATE('SQL Tutorial', 3);

这个查询返回了SQL TutorialSQL TutorialSQL Tutorial

更多关于repeat的信息,请参考:
(1) MySQL REPEAT() Function - W3Schools. https://www.w3schools.com/sqL/func_mysql_repeat.asp.
(2) repeat loop in Sql? - Stack Overflow. https://stackoverflow.com/questions/53034170/repeat-loop-in-sql.
(3) REPEAT statement in SQL procedures - IBM. https://www.ibm.com/docs/en/db2/11.5?topic=statements-repeat-statement-in-sql-procedures.
(4) MySQL REPEAT Loop - MySQL Tutorial. https://www.mysqltutorial.org/mysql-stored-procedure/mysql-repeat-loop/.
(5) 【SQL Server】 REPLICATE関数(文字列を繰り返す)の使い方 | いちれべ.com. https://ichilv.com/sql-replicte/.

datediff

datediff是一个SQL函数,用于计算两个日期之间的差异。它有一种用法:

  • DATEDIFF(datepart, startdate, enddate):返回一个整数,表示两个日期startdateenddate之间的指定日期部分datepart的差异。这个函数支持SQL Server、Azure SQL Database、Azure SQL Managed Instance、Azure Synapse Analytics和Analytics Platform System (PDW)。¹

例如,下面的查询计算两个日期之间的年份差异:

SELECT DATEDIFF(year, '2017/08/25', '2011/08/25') AS DateDiff;

这个查询返回了-6

下面的查询计算两个日期之间的小时差异:

SELECT DATEDIFF(hour, '2017/08/25 07:00', '2017/08/25 12:45') AS DateDiff;

这个查询返回了5

更多关于datediff的信息,请参考:
(1) SQL Server DATEDIFF() Function - W3Schools. https://www.w3schools.com/SQl/func_sqlserver_datediff.asp.
(2) DATEDIFF (Transact-SQL) - SQL Server | Microsoft Learn. https://learn.microsoft.com/en-us/sql/t-sql/functions/datediff-transact-sql?view=sql-server-ver16.
(3) DATEDIFF (Transact-SQL) - SQL Server | Microsoft Learn. https://learn.microsoft.com/pt-br/sql/t-sql/functions/datediff-transact-sql?view=sql-server-ver16.
(4) Understanding Datediff in SQL With Syntax, Examples and More. https://www.simplilearn.com/tutorials/sql-tutorial/datediff-in-sql.
(5) SQL语句中DATEDIFF()函数的用法_Candy_Sir的博客-CSDN博客. https://blog.csdn.net/Candy_Sir/article/details/85231400.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值