函數PARSENAME使用和截取字符串


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

函數有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格式https://www.cnblogs.com/insus/p/10958864.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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM