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
另外一個演示,定義一個表變量,隨機添加存儲一些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)