خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


استفاده از تابع ()PARSENAME در SQL Server

استفاده از تابع ()PARSENAME در SQL Server
در SQL Server می توانید از تابع PARSENAME برای برگرداندن بخشی از نام یک شی استفاده کنید. به عنوان مثال ، می توانید از آن برای برگرداندن قسمت schema (یا هر قسمت دیگر) از چهار قسمت نام مانند server.schema.db.object استفاده کنید. در ادامه با ذکر مثال با طرز و کار و نحوه استفاده این تابع آشنا خواهید شد.

نرم افزار سامانه مودیان راهکار
Syntax استفاده از تابع مذکور بصورت زیر می باشد:



PARSENAME ( 'object_name' , object_piece )

آرگومان object_piece باید بین 1 تا 4 باشد. این مقدار تعیین می کند کدام قسمت از نام شی را برگرداند. این مقادیر برابر یکی از موارد زیر است:

استفاده از تابع ()PARSENAME در SQL Server
لطفا به مثال زیر توجه کنید:

SELECT PARSENAME('Homer.dbo.Music.Artists', 4) AS Result;

+----------+
| Result |
|----------|
| Homer |
+----------+

در دستور فوق از بین چهار مقدار موجود، server name را برای برگرداندن در خروجی انتخاب کردیم.
شما حتی می توانید همه قسمت را بصورت جداگانه برگردانید.

DECLARE @object_name char(23) = 'Homer.dbo.Music.Artists';
SELECT
PARSENAME(@object_name, 4) AS [Server],
PARSENAME(@object_name, 3) AS [Schema],
PARSENAME(@object_name, 2) AS [Database],
PARSENAME(@object_name, 1) AS [Object];

+----------+----------+------------+----------+
| Server | Schema | Database | Object |
|----------+----------+------------+----------|
| Homer | dbo | Music | Artists |
+----------+----------+------------+----------+

مهم است که بدانید PARSENAME مشخص نمی کند که یک شی با نام مشخص شده وجود دارد یا خیر چرا کهفقط قسمت مشخص شده را از نام شی برمی گرداند.

DECLARE @object_name char(28) = 'completely.bogus.object.name';
SELECT
PARSENAME(@object_name, 4) AS [Server],
PARSENAME(@object_name, 3) AS [Schema],
PARSENAME(@object_name, 2) AS [Database],
PARSENAME(@object_name, 1) AS [Object];

+------------+----------+------------+----------+
| Server | Schema | Database | Object |
|------------+----------+------------+----------|
| completely | bogus | object | name |
+------------+----------+------------+----------+

با توجه به اینکه می توانید یک نام شی کاملاً ساختگی را به این تابع پاس دهید، PARSENAME می تواند هک مفیدی برای تقسیم سایر داده های محدود شده مانند آدرس های IP4 باشد.

DECLARE @object_name char(15) = '172.217.167.110';
SELECT
PARSENAME(@object_name, 4) AS [4],
PARSENAME(@object_name, 3) AS [3],
PARSENAME(@object_name, 2) AS [2],
PARSENAME(@object_name, 1) AS [1];

+-----+-----+-----+-----+
| 4 | 3 | 2 | 1 |
|-----+-----+-----+-----|
| 172 | 217 | 167 | 110 |
+-----+-----+-----+-----+

اگر واقعاً به چنین کاری احتیاج دارید ، استفاده از روش دیگری مانند تابع STRING_SPLIT را در پیش بگیرید.
از آنجایی که PARSENAME با نام اشیاء کار دارد، شما نمی توانید از ویرگول یا کاما استفاده کنید و انتظار نتیجه درست را داشته باشید. اگر از ویرگول استفاده کنید، نتیجه زیر را دریافت خواهید کرد:

DECLARE @object_name char(23) = 'Homer,dbo,Music,Artists';
SELECT
PARSENAME(@object_name, 4) AS [Server],
PARSENAME(@object_name, 3) AS [Schema],
PARSENAME(@object_name, 2) AS [Database],
PARSENAME(@object_name, 1) AS [Object];

+----------+----------+------------+-------------------------+
| Server | Schema | Database | Object |
|----------+----------+------------+-------------------------|
| NULL | NULL | NULL | Homer,dbo,Music,Artists |
+----------+----------+------------+-------------------------+

اگر باید به جای . از , استفاده کنید، از روش های دیگری مثل تابع STRING_SPLIT استفاده کنید.


نمایش دیدگاه ها (0 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.


دسته بندی مطالب خوش آموز