函數PARSENAME使用和截取字符串

MS SQL server有一個函數PARSENAME ( 'object_name' , object_piece )html

函數有2個參數:數據庫

Object_name
檢索的對象名稱。便是:服務器名.數據庫名.全部者.對象名
Object_piece
是檢索的對象類型。其值爲1~4。
 
好比,爲存儲過程或自定義函數傳入表名: TABLE_CATALOG.TABLE_SCHEMA. TABLE_NAME.COLUMN_NAME動態操做數據表時。
 
舉個列:
 
 
DECLARE @str  NVARCHAR(MAX) = N'testdb.dbo.table_part.qty'

SELECT 
PARSENAME(@str,4) AS [TABLE_CATALOG],
PARSENAME(@str,3) AS [TABLE_SCHEMA],
PARSENAME(@str,2) AS [TABLE_NAME],
PARSENAME(@str,1) AS [COLUMN_NAME]
GO
Source Code

 

 另一個演示,定義一個表變量,隨機添加存儲一些IP地址:
 
 
 而後SELECT表,並使用ORDER BY進行排序:
 
 
這種排序結果,並不是是咱們想要的,它只是按每一段首數字大小進行排序。
這是爲何,由於這些IP地址,並不是是標準IP地址。
把IP地址,轉換爲標準IP,參考這篇《 轉換爲標準IPv4格式http://www.javashuo.com/article/p-dbjboodc-er.html
以上的這個函數,也有使用 PARSENAME函數時行處理。
 
 
 
;WITH cte_ips AS
(
    SELECT [IPv4],[dbo].[svf_ConvertToStandardIPv4]([IPv4]) AS [std_ip] FROM @ips
)
SELECT [IPv4],[std_ip] FROM cte_ips
ORDER BY PARSENAME([std_ip],4),
         PARSENAME([std_ip],3),
         PARSENAME([std_ip],2),
         PARSENAME([std_ip],1)
Source Code
相關文章
相關標籤/搜索