以下是SQL Server字符串函數,用于處理輸入字符串并返回字符串或數值:
| 函數 | 描述說明 |
| --- | --- |
| ASCII | 返回字符的ASCII代碼值。 |
| CHAR | 將ASCII值轉換為字符。 |
| CHARINDEX | 從指定位置開始搜索字符串內的子字符串,并返回子字符串的位置。 |
| CONCAT | 將兩個或多個字符串連接成一個字符串。 |
| CONCAT\_WS | 使用分隔符將多個字符串連接成一個字符串。 |
| DIFFERENCE | 比較兩個字符串的`SOUNDEX()`值。 |
| FORMAT | 返回使用指定格式和可選區域性格式化的值。 |
| LEFT | 從左側開始從字符串中提取給定數量的字符。 |
| LEN| 返回字符串的多個字符。 |
| LOWER | 將字符串轉換為小寫。 |
| LTRIM | 刪除所有前導空格后,從指定的字符串返回一個新字符串。 |
| NCHAR | 使用Unicode標準定義的指定整數代碼返回Unicode字符。 |
| PATINDEX | 返回指定表達式中第一次出現模式的起始位置。 |
| QUOTENAME | 返回添加了分隔符的Unicode字符串,以使輸入字符串成為有效的SQL Server分隔標識符。 |
| REPLACE | 用字符串替換所有出現的子字符串與另一個子字符串。 |
| REPLICATE | 返回重復指定次數的字符串。 |
| REVERSE | 返回字符串的相反順序。 |
| RIGHT | 從右側開始從字符串中提取給定數量的字符。 |
| RTRIM | 刪除字符串所有尾隨空白后,返回一個新字符串。 |
| SOUNDEX | 根據字符串的使用方式返回字符串的四個字符(`SOUNDEX`)代碼 |
| SPACE | 返回一串重復的空格。 |
| STR | 返回從數字數據轉換的字符數據。 |
| STRING\_AGG | 將具有指定分隔符的字符串行連接到新字符串中。 |
| STRING_ESCAPE | 轉義文本中的特殊字符并返回帶有轉義字符的文本。 |
| STRING\_SPLIT | 一個表值函數,它根據指定的分隔符將字符串拆分為子字符串行。 |
| STUFF | 將字符串插入另一個字符串。 |
| SUBSTRING | 從具有指定長度的指定位置開始提取字符串中的子字符串。 |
| TRANSLATE | 在一次操作中替換多個單字符,一對一轉換。 |
| TRIM| 刪除所有前導和尾隨空白后,從指定的字符串返回一個新字符串。 |
| UNICODE | 返回字符的Unicode標準定義的整數值。 |
| UPPER | 將字符串轉換為大寫。 |
ASCII 演示
```
select ASCII('Z') Z
```
#### SQL Server CHAR()函數簡介
`CHAR()`函數將ASCII代碼值轉換為字符值。 以下簡介`CHAR()`函數的語法:
~~~sql
CHAR ( int_exp )
~~~
在此語法中,`int_expr`是一個整數表達式,其值為`0`到`255`之間的整數。如果整數表達式的計算結果超出此范圍,則`CHAR()`函數返回`NULL`。
`CHAR()`函數返回數據類型為`CHAR(1)`的字符。
> 請注意,要將字符轉換為ASCII值,請使用[ASCII()](http://www.yiibai.com/sqlserver/sql-server-ascii-function.html "ASCII()")函數
#### SQL Server CHAR()函數示例
以下示例使用`CHAR()`函數來獲取數字`65`和`90`的字符:
~~~sql
SELECT
CHAR(65) char_65,
CHAR(90) char_90;
~~~
##### SQL Server CHARINDEX()函數簡介
SQL Server `CHARINDEX()`函數從指定位置開始搜索字符串內的子字符串。 它返回搜索到的字符串中找到的子字符串的位置,如果未找到子字符串,則返回零。 需要注意的是:它返回的起始位置是從`1`開始的,而不是從`0`開始的。
以下是`CHARINDEX()`函數的語法:
~~~sql
CHARINDEX(substring, string [, start_location])
~~~
在上面語法中,
* `substring` - 是要搜索的子字符串。它的長度限制為`8,000`個字符。
* `string` - 可以是文字字符串,表達式或列。這是一個要搜索的字符串。
* `start_location`是搜索開始的位置。 `start_location`是整數,大整數或計算結果為這些數據類型的值的表達式。
* `start_location`參數是可選的。 如果未指定,零或負值,則搜索從字符串的開頭開始。
請注意,`CHARINDEX()`函數可以根據指定的排序規則執行區分大小寫和不區分大小寫的搜索。
#### SQL Server CHARINDEX()函數示例
下面來看一些使用`CHARINDEX()`函數的例子。
**1\. 使用CHARINDEX()執行單個搜索**
以下示例使用`CHARINDEX()`函數在字符中`"SQL Server CHARINDEX"`中執行字符串`"SQL`的簡單搜索。
~~~sql
SELECT
CHARINDEX('SQL', 'SQL Server CHARINDEX') position;
~~~
執行上面查詢語句,得到以下結果:
~~~shell
position
-----------
1
(1 row affected)
~~~
**2\. 使用CHARINDEX()函數執行不區分大小寫的搜索**
下面語句中對字符串`"SQL Server CHARINDEX"`中執行不區分大小寫的搜索字符串`"SERVER"`:
~~~sql
SELECT
CHARINDEX(
'SERVER',
'SQL Server CHARINDEX'
) position;
~~~
執行上面查詢語句,得到以下結果:
~~~shell
position
-----------
5
(1 row affected)
~~~
**3\. 使用CHARINDEX()函數執行區分大小寫的搜索**
以下示例顯示如何在字符串:`"SQL Server CHARINDEX"`中區分大小寫搜索字符串`"SERVE"`。
~~~sql
SELECT
CHARINDEX(
'SERVER',
'SQL Server CHARINDEX'
COLLATE Latin1_General_CS_AS
) position;
~~~
執行上面查詢語句,得到以下結果:
~~~shell
position
-----------
0
(1 row affected)
~~~
**4\. 使用CHARINDEX()函數搜索不存在的子字符串**
以下示例說明了如何在字符串`'This is a haystack'`中搜索子字符串:`'needle'`。
~~~sql
SELECT
CHARINDEX('is','This is a my sister',5) start_at_fifth,
CHARINDEX('is','This is a my sister',10) start_at_tenth;
~~~
執行上面查詢語句,得到以下結果:
~~~shell
start_at_fifth start_at_tenth
-------------- --------------
6 15
(1 row affected)
~~~
#### SQL Server CONCAT()函數簡介
使用`CONCAT()`函數可將兩個或多個字符串連接成一個字符串,語法如下:
~~~sql
CONCAT ( input_string1, input_string2 [, input_stringN ] );
~~~
`CONCAT()`接收最多`255`個輸入字符串并將它們連接成一個字符串。 它至少需要兩個輸入字符串。 如果傳遞一個輸入字符串,`CONCAT()`函數將會引發錯誤。
如果傳遞非字符串值,`CONCAT()`函數將在連接之前將這些值隱式轉換為字符串。
`CONCAT()`函數還將`NULL`轉換為類型為`VARCHAR(1)`的空字符串。
請注意,要在連接期間添加分隔符,請使用[CONCAT\_WS()](http://www.yiibai.com/sqlserver/sql-server-concat_ws-function.html "CONCAT_WS()")函數。
#### SQL Server CONCAT()函數示例
下面舉一些例子來熟悉如何使用`CONCAT()`函數。
**1\. 將CONCAT()函數與文字字符串一起使用**
以下示例使用`CONCAT()`函數來連接三個文字字符串:`YiiBai`,`.`和`Com`:
~~~sql
SELECT
'YiiBai' + '.' + 'Com' AS doname;
~~~
執行上面查詢語句,得到以下結果:
~~~shell
doname
---------
YiiBai.Com
(1 row affected)
~~~
**2\. 將CONCAT()函數與表列一起使用**
此示例使用[示例數據庫](https://www.yiibai.com/sqlserver/sql-server-sample-database.html "示例數據庫")中的`sales.customers`表。

以下語句使用`CONCAT()`函數來連接`sales.customers`表的`first_name`和`last_name`列中的值:
~~~sql
SELECT
customer_id,
first_name,
last_name,
CONCAT(first_name, ' ', last_name) full_name
FROM
sales.customers
ORDER BY
full_name;
~~~
#### SQL Server CONCAT\_WS()函數簡介
SQL Server `CONCAT_WS()`函數使用分隔符將兩個或多個字符串連接成一個字符串。 `CONCAT_WS()`表示與分隔符連接。
以下是`CONCAT_WS()`函數的語法:
~~~sql
CONCAT_WS(separator,input_string1,input_string2,[...input_stringN]);
~~~
在上面這個語法中:
* `separator`是一個基于字符的表達式,其值為:`CHAR`,`NCHAR`,`VARCHAR`或`NVARCHAR`類型的任何字符。
* `input_string1`到`input_stringN`是任何類型的表達式。`CONCAT_WS()`函數在連接之前隱式地將非字符類型的值轉換為字符類型。
`CONCAT_WS()`函數將輸入字符串連接成一個字符串。 它將這些連接的字符串與第一個參數中指定的分隔符分開。
請注意,`CONCAT_WS()`至少需要兩個輸入字符串。 這意味著如果傳遞零或一個輸入字符串參數,該函數將引發錯誤。
`CONCAT_WS()`函數將`NULL`視為`VARCHAR(1)`類型的空字符串。 它也不會在`NULL`之間添加分隔符。 因此,`CONCAT_WS()`函數可以干凈地連接可能具有空值的字符串。
#### SQL Server CONCAT\_WS()函數示例
下面來看一些使用`CONCAT_WS()`函數的例子。
**1\. 使用CONCAT\_WS()將文字字符串與分隔符連接起來**
以下示例使用`CONCAT_WS()`函數將兩個文字字符串連接成一個字符串。 它使用字符:`.`來分隔兩個連接值:
~~~sql
SELECT
CONCAT_WS('.', 'YiiBai', 'Com') full_doname
~~~
執行上面查詢語句,得到以下結果:
~~~shell
full_doname
-----------
YiiBai.Com
(1 行受影響)
~~~
**2\. 將CONCAT\_WS()與表列一起使用**
以下語句使用`CONCAT_WS()`函數連接`sales.customers`表的`last_name`和`first_name`列中的值。 它用逗號(`,`)和空格分隔`last_name`和`first_name`:
~~~sql
SELECT
first_name,
last_name,
CONCAT_WS(', ', last_name, first_name) full_name
FROM
sales.customers
ORDER BY
first_name,
last_name;
~~~
#### SQL Server LEFT()函數簡介
`LEFT()`函數從提供的字符串的左側提取給定數量的字符。 例如,`LEFT('SQL Server',3)`返回SQL。
`LEFT()`函數的語法如下:
~~~sql
LEFT ( input_string , number_of_characters )
~~~
在這個語法中:
* `input_string`可以是文字字符串,變量或列。`input_string`的結果的數據類型可以是除`TEXT`或`NTEXT`之外的任何數據類型,它隱式轉換為`VARCHAR`或`NVARCHAR`類型。
* `number_of_characters`是一個正整數,指定將返回`input_string`的字符數。
當`input_string`是非`Unicode`字符數據類型時,`LEFT()`函數返回值為`VARCHAR`類型;如果`input_strin`g是`Unicode`字符數據類型,則返回`NVARCHAR`類型。
#### SQL Server LEFT()函數示例
下面舉一些使用`LEFT()`函數的例子來更好地理解它。
**1\. LEFT()函數使用帶有文字字符串**
以下語句使用`LEFT()`返回字符串SQL Server的最左邊三個字符:
~~~sql
SELECT LEFT('SQL Server',3) result_string;
~~~
執行上面查詢語句,得到以下結果:
~~~shell
result_string
-------------
SQL
(1 row affected)
~~~
**LEFT()函數與表列一起使用**
以下示例返回`production.products`表中每個產品名稱的最左側七個字符:
~~~sql
SELECT
product_name,
LEFT(product_name, 7) first_7_characters
FROM
production.products
ORDER BY
product_name;
~~~
#### SQL Server LEN()函數簡介
`LEN()`函數返回輸入字符串的字符數,不包括尾隨空格。
以下是`LEN()`函數的語法:
~~~sql
LEN(input_string)
~~~
在此語法中,`input_string`可以是文字字符串,字符串表達式或字符或二進制數據的列。
如果`input_string`是`VARCHAR(max)`,`NVARCHAR(max)`或`VARBINARY(max)`數據類型,則`LEN()`函數返回數據類型為[BIGINT](http://www.yiibai.com/sqlserver/sql-server-int.html "BIGINT")的值; 否則返回為`INT`類型。
#### SQL Server LEN()函數示例
下面來看一些使用`LEN()`函數的例子。
**1\. LEN()函數與文字字符串一起使用**
下面的示例使用`LEN`函數返回字符串:`"SQL Server LEN"`的字符數和帶有尾隨空格的相同字符串。
~~~sql
SELECT
LEN('SQL Server LEN') length,
LEN('SQL Server LEN ') length_with_trailing_blanks;
~~~
執行上面查詢語句,得到以下結果:

如上所見,`LEN()`函數跳過尾隨空白。
**2\. 使用LEN()函數和列**
下面使用[示例數據庫](https://www.yiibai.com/sqlserver/sql-server-sample-database.html# "示例數據庫")中的`production.products`表進行演示。

以下語句使用`LEN()`函數返回產品名稱及其長度,并按產品名稱的長度對產品進行排序。
~~~sql
SELECT
product_name,
LEN(product_name) product_name_length
FROM
production.products
ORDER BY
LEN(product_name) DESC;
~~~
`LOWER()`函數將字符串轉換為小寫。 以下是`LOWER()`函數的語法:
~~~sql
LOWER(input_string)
~~~
在此語法中,`input_string`可以是文字字符串,變量,字符串表達式或表列。
`input_string`的類型必須可以隱式轉換為`VARCHAR`類型。 否則,必須使用`CAST()`函數顯式地轉換`input_string`。
`LOWER()`函數返回`input_string`的小寫。
#### SQL Server LOWER()函數示例
下面來看一些使用`LOWER()`函數的例子。
**1\. 使用LOWER()函數和文字字符串**
此示例使用`LOWER()`函數將字符串:`'YiiBai'`轉換為`'yiibai'`:
~~~sql
SELECT
LOWER('YIIBAI') result, LOWER('YiiBai') result2;
~~~
執行上面查詢語句,得到以下結果:
~~~shell
result result2
------------ ------------
yiibai yiibai
(1 行受影響)
~~~
**2\. 將LOWER()函數與表列一起使用**
在此示例中,將使用[示例數據庫](http://www.yiibai.com/sqlserver/sql-server-sample-database.html "示例數據庫")中的`customers`表:

以下語句使用`LOWER()`函數在連接之前將客戶的名字(`first_name`)和姓氏(`last_name`)轉換為小寫:
~~~sql
SELECT
first_name,
last_name,
CONCAT_WS(
' ',
LOWER(first_name),
LOWER(last_name)
) full_name_lowercase
FROM
sales.customers
ORDER BY
first_name,
last_name;
~~~
#### SQL Server RIGHT()函數簡介
`RIGHT()`函數從指定字符串的右側提取給定數量的字符。 例如,`RIGHT('SQL Server',6)`返回:`'Server'`。
**RIGHT()函數的語法如下:**
~~~sql
RIGHT ( input_string , number_of_characters )
~~~
在這個語法中:
* `input_string`可以是文字字符串,變量或列。 `input_string`的結果可以是任何數據類型,但是`TEXT`或`NTEXT`除外,它隱式轉換為[VARCHAR](http://www.yiibai.com/sqlserver/sql-server-varchar.html "VARCHAR")或[NVARCHAR](http://www.yiibai.com/sqlserver/sql-server-nvarchar.html "NVARCHAR")。
* `number_of_characters`是一個正整數,指定將返回`input_string`右側的字符數。
請注意,當`input_string`是非Unicode字符數據類型時,`RIGHT()`函數返回值的類型為:`VARCHAR`;如果`input_string`是Unicode字符數據類型,則返回值的類型為:`NVARCHAR`。
#### SQL Server RIGHT()函數示例
以下語句使用`RIGHT()`返回字符串:`"SQL Server"`的最右邊`6`個字符:
~~~sql
SELECT LEFT('SQL Server',6) Result_string;
~~~
執行上面查詢語句,得到以下結果:
~~~shell
Result_string
-------------
Server
(1 row affected)
~~~
以下示例從[示例數據庫](https://www.yiibai.com/sqlserver/sql-server-sample-database.html "示例數據庫")返回`production.products`表中每個產品名稱的最右邊四個字符:
~~~sql
SELECT
product_name,
RIGHT(product_name, 4) last_4_characters
FROM
production.products
ORDER BY
product_name;
~~~
`UPPER()`函數將輸入字符串轉換為大寫。 以下是`UPPER()`函數的語法:
~~~sql
UPPER(input_string)
~~~
在此語法中,`input_string`可以是文字字符串,變量,字符串表達式或表列。
`input_string`的類型必須可以隱式轉換為`VARCHAR`。 否則,必須使用`CAST()`函數顯式轉換`input_string`。
`UPPER()`函數返回`input_string`的大寫形式。
#### SQL Server UPPER()函數示例
下面來看一些使用`UPPER()`函數的例子。
**1\. 使用UPPER()函數和文字字符串**
此示例使用`UPPER()`函數將字符串`'sql'`轉換為`'SQL'`:
~~~sql
SELECT
UPPER('sql') result;
~~~
執行上面查詢語句,得到以下結果:
~~~shell
result
------
SQL
(1 row affected)
~~~
**2\. 將UPPER()函數與表列一起使用**
在此示例中,將使用示例數據庫中的`production.products`表:
函數")
以下語句使用`UPPER()`函數將產品名稱轉換為大寫:
~~~sql
SELECT
product_name,
UPPER(product_name) product_name_upper
FROM
production.products
ORDER BY
product_name;
~~~
- 第一章-測試理論
- 1.1軟件測試的概念
- 1.2測試的分類
- 1.3軟件測試的流程
- 1.4黑盒測試的方法
- 1.5AxureRP的使用
- 1.6xmind,截圖工具的使用
- 1.7測試計劃
- 1.8測試用例
- 1.9測試報告
- 2.0 正交表附錄
- 第二章-缺陷管理工具
- 2.1缺陷的內容
- 2.2書寫規范
- 2.3缺陷的優先級
- 2.4缺陷的生命周期
- 2.5缺陷管理工具簡介
- 2.6缺陷管理工具部署及使用
- 2.7軟件測試基礎面試
- 第三章-數據庫
- 3.1 SQL Server簡介及安裝
- 3.2 SQL Server示例數據庫
- 3.3 SQL Server 加載示例
- 3.3 SQL Server 中的數據類型
- 3.4 SQL Server 數據定義語言DDL
- 3.5 SQL Server 修改數據
- 3.6 SQL Server 查詢數據
- 3.7 SQL Server 連表
- 3.8 SQL Server 數據分組
- 3.9 SQL Server 子查詢
- 3.10.1 SQL Server 集合操作符
- 3.10.2 SQL Server聚合函數
- 3.10.3 SQL Server 日期函數
- 3.10.4 SQL Server 字符串函數
- 第四章-linux
- 第五章-接口測試
- 5.1 postman 接口測試簡介
- 5.2 postman 安裝
- 5.3 postman 創建請求及發送請求
- 5.4 postman 菜單及設置
- 5.5 postman New菜單功能介紹
- 5.6 postman 常用的斷言
- 5.7 請求前腳本
- 5.8 fiddler網絡基礎及fiddler簡介
- 5.9 fiddler原理及使用
- 5.10 fiddler 實例
- 5.11 Ant 介紹
- 5.12 Ant 環境搭建
- 5.13 Jmeter 簡介
- 5.14 Jmeter 環境搭建
- 5.15 jmeter 初識
- 5.16 jmeter SOAP/XML-RPC Request
- 5.17 jmeter HTTP請求
- 5.18 jmeter JDBC Request
- 5.19 jmeter元件的作用域與執行順序
- 5.20 jmeter 定時器
- 5.21 jmeter 斷言
- 5.22 jmeter 邏輯控制器
- 5.23 jmeter 常用函數
- 5.24 soapUI概述
- 5.25 SoapUI 斷言
- 5.26 soapUI數據源及參數化
- 5.27 SoapUI模擬REST MockService
- 5.28 Jenkins的部署與配置
- 5.29 Jmeter+Ant+Jenkins 搭建
- 5.30 jmeter腳本錄制
- 5.31 badboy常見的問題
- 第六章-性能測試
- 6.1 性能測試理論
- 6.2 性能測試及LoadRunner簡介
- 第七章-UI自動化
- 第八章-Maven
- 第九章-測試框架
- 第十章-移動測試
- 10.1 移動測試點及測試流程
- 10.2 移動測試分類及特點
- 10.3 ADB命令及Monkey使用
- 10.4 MonkeyRunner使用
- 10.5 appium工作原理及使用
- 10.6 Appium環境搭建(Java版)
- 10.7 Appium常用函數(Java版)
- 10.8 Appium常用函數(Python版)
- 10.9 兼容性測試