سلام دوستان عزیزم
امیدوارم حالتون خوب باشه
شاید براتون پیش اومده باشه که نیاز داشته باشید برای تغییرات جداول ، یا ایجاد جداول جدید کد بنویسید و در سایت مشتری اجرا کنید.
در نسخه های پایین تر از 2016 برای اینکه یک جدول رو حذف کنید بهتر بود تست می کردین که وجود داره که کد شما خطا نده.
If object_id(N'dbo.Products',N'U') is not null Drop Table Dbo.products
از نسخه 2016 به بعد میتونید از ساختار زیباتر و ساده تری استفاده کنید و به این صورت بنویسید.
Drop Table If exists dbo.products
و اگر چند جدول بود کافیه فقط با کاما از هم جدا بشن . مانند
Drop Table If exists dbo.products,dbo.orders
امیدوارم لذت برده باشید.
شاد و پرانرژی باشید.
حمیدرضا صادقیان
@Hamidreza_Sadeghian
#TSQL_Tips
#DDL
امیدوارم حالتون خوب باشه
شاید براتون پیش اومده باشه که نیاز داشته باشید برای تغییرات جداول ، یا ایجاد جداول جدید کد بنویسید و در سایت مشتری اجرا کنید.
در نسخه های پایین تر از 2016 برای اینکه یک جدول رو حذف کنید بهتر بود تست می کردین که وجود داره که کد شما خطا نده.
If object_id(N'dbo.Products',N'U') is not null Drop Table Dbo.products
از نسخه 2016 به بعد میتونید از ساختار زیباتر و ساده تری استفاده کنید و به این صورت بنویسید.
Drop Table If exists dbo.products
و اگر چند جدول بود کافیه فقط با کاما از هم جدا بشن . مانند
Drop Table If exists dbo.products,dbo.orders
امیدوارم لذت برده باشید.
شاد و پرانرژی باشید.
حمیدرضا صادقیان
@Hamidreza_Sadeghian
#TSQL_Tips
#DDL
سلام و عرض ادب خدمت دوستان عزیزم
امیدوارم حالتون خوب باشه
در بحث Logical Processing شاید این سوال برای شما پیش اومده باشه که وقتی برای یک فیلدی در Select میایم Alias تعریف می کنیم چرا د رهمون Select نمیتونیم از اون Alias استفاده کنیم.
به این مثال دقت کنید.
Select
Year(OrderDate) as YearORderDate,
YearOrderDate+1 as NewOrderDate
From
Sales.Orders
توی این دستور شما نمیتونید از فیلد yearOrderDate استفاده کنید . درسته که در Logical Processing اینجا Select پردازش شده ولی دلیل اصلی این هست که تمامی عملیاتی که در Select قرار میگیره به جز distinct و top در یک دسته انجام میشه و در عمل همه اونها باهم پردازش و ایجاد میشن به همین خاطر دسترسی به اون آلیاس هنوز وجود نداره و شما حتما باید از year(OrderDate) در خط دوم استفاده کنید.
امیدوارم لذت برده باشین
شاد و پرانرژی باشید
حمیدرضا صادقیان
@Hamidreza_Sadeghian
#TSQL_Tips
#Logical_Processing
امیدوارم حالتون خوب باشه
در بحث Logical Processing شاید این سوال برای شما پیش اومده باشه که وقتی برای یک فیلدی در Select میایم Alias تعریف می کنیم چرا د رهمون Select نمیتونیم از اون Alias استفاده کنیم.
به این مثال دقت کنید.
Select
Year(OrderDate) as YearORderDate,
YearOrderDate+1 as NewOrderDate
From
Sales.Orders
توی این دستور شما نمیتونید از فیلد yearOrderDate استفاده کنید . درسته که در Logical Processing اینجا Select پردازش شده ولی دلیل اصلی این هست که تمامی عملیاتی که در Select قرار میگیره به جز distinct و top در یک دسته انجام میشه و در عمل همه اونها باهم پردازش و ایجاد میشن به همین خاطر دسترسی به اون آلیاس هنوز وجود نداره و شما حتما باید از year(OrderDate) در خط دوم استفاده کنید.
امیدوارم لذت برده باشین
شاد و پرانرژی باشید
حمیدرضا صادقیان
@Hamidreza_Sadeghian
#TSQL_Tips
#Logical_Processing
سلام خدمت دوستان عزیزم
امیدوارم حالتون خوب باشه.
یک نکته ای رو جاهای مختلف دیدم خواستم بهتون گوشزد کنم.
شاید شنیده باشین که در view ها یا به طور کل در Table Expression ها از order by نمیتونید استفاده کنید و حتما باید Top باشه تا بتونید از order by استفاده کنید.
و حتما هم یا دیدین یا خودتون انجام دادین که به این صورت مثلا بنویسید
Create view vw1
select top 100 percent ...
from ...
order by id
go
خوب باید خدمتتون عرض کنم که این Order by هیچ تضمینی به مرتب شدن خروجی شما در بیرون نمیکنه.
این order by در واقع برای همون سلکت داخل view هست که مثلا شما میخواهید یک تعداد رکورد خاص رو برگردونید.
برای سلکت های بیرونی مثل این هست که شما دارید از یک جدول مجازی سلکت میکنید پس هیچ گارانتی در خصوص مرتب بودن داده ها نداره. و اگر دارید به این صورت مینویسید ، میتونید به راحتی حذفش کنید و در سلکت اصلیتون از Order by استفاده کنید.
امیدوارم لذت برده باشین
شاد و پرانرژی باشید
حمیدرضا صادقیان
@Hamidreza_Sadeghian
#TSQL_Tips
#Logical_Processing
امیدوارم حالتون خوب باشه.
یک نکته ای رو جاهای مختلف دیدم خواستم بهتون گوشزد کنم.
شاید شنیده باشین که در view ها یا به طور کل در Table Expression ها از order by نمیتونید استفاده کنید و حتما باید Top باشه تا بتونید از order by استفاده کنید.
و حتما هم یا دیدین یا خودتون انجام دادین که به این صورت مثلا بنویسید
Create view vw1
select top 100 percent ...
from ...
order by id
go
خوب باید خدمتتون عرض کنم که این Order by هیچ تضمینی به مرتب شدن خروجی شما در بیرون نمیکنه.
این order by در واقع برای همون سلکت داخل view هست که مثلا شما میخواهید یک تعداد رکورد خاص رو برگردونید.
برای سلکت های بیرونی مثل این هست که شما دارید از یک جدول مجازی سلکت میکنید پس هیچ گارانتی در خصوص مرتب بودن داده ها نداره. و اگر دارید به این صورت مینویسید ، میتونید به راحتی حذفش کنید و در سلکت اصلیتون از Order by استفاده کنید.
امیدوارم لذت برده باشین
شاد و پرانرژی باشید
حمیدرضا صادقیان
@Hamidreza_Sadeghian
#TSQL_Tips
#Logical_Processing
سلام خدمت دوستان عزیزم
امیدوارم حالتون خوب باشه
زمانی که دارید یک Script مینویسید و قراره یک سری آبجکتها تغییر کنن. شما میاین چک می کنید که ایا وجود داره یاخیر. و اگر داشت حذفش میکنیدو مجدد اونو میسازید. منظورم از این آبجکتها View,sp,function هست.
حالا میتونید از این نوع کد استفاده کنید که دیگه نیازی به اون کنترل نداشته باشید.
CREATE or alter procedure xxx
as
go
امیدوارم لذت برده باشین
شاد و پرانرژی باشید
حمیدرضا صادقیان
@Hamidreza_Sadeghian
#TSQL_Tips
امیدوارم حالتون خوب باشه
زمانی که دارید یک Script مینویسید و قراره یک سری آبجکتها تغییر کنن. شما میاین چک می کنید که ایا وجود داره یاخیر. و اگر داشت حذفش میکنیدو مجدد اونو میسازید. منظورم از این آبجکتها View,sp,function هست.
حالا میتونید از این نوع کد استفاده کنید که دیگه نیازی به اون کنترل نداشته باشید.
CREATE or alter procedure xxx
as
go
امیدوارم لذت برده باشین
شاد و پرانرژی باشید
حمیدرضا صادقیان
@Hamidreza_Sadeghian
#TSQL_Tips
سلام خدمت دوستان عزیزم
امیدوارم حالتون خوب باشه
یکی از چالش هایی که ممکنه وجود داشته باشه بدست آوردن دیتاتایپ و مابقی مشخصات یک فیلد هست که نیاز هست یا از sysobjects بیاید Select کنید یا اینکه از information_schema.Columns استفاده کنید.
ولی یک راه حل ساده تر استفاده از تابع SQL_Variant_Property هست . درواقع این تابع مشخصات مقادیر از نوع SQL_Variant رو بهتون میده . با این تابع ، نوع فیلد ، طول فیلد ، Collation ، Total Byte, Maxlength رو میتوونید مشخص کنید.
به این مثال توجه کنید.
Use AdventureWorks2019
go
select SQL_VARIANT_PROPERTY(Name,'BaseType'),
SQL_VARIANT_PROPERTY(Name,'TotalBytes'),
SQL_VARIANT_PROPERTY(Name,'MaxLength')
from Production.Product
Go
با این کد هم نوع فیلد Name مشخص میشه هم تعداد بایتی که در هر رکورد ذخیره شده برای اون فیلد و هم ماکزیمم اون فیلدرو نشون میده.
امیدوارم لذت برده باشین.
شاد و پرانرژی باشید☺️☺️
حمیدرضا صادقیان
@Hamidreza_Sadeghian
#SQL_Variant_Property
#TSQL_Tips
امیدوارم حالتون خوب باشه
یکی از چالش هایی که ممکنه وجود داشته باشه بدست آوردن دیتاتایپ و مابقی مشخصات یک فیلد هست که نیاز هست یا از sysobjects بیاید Select کنید یا اینکه از information_schema.Columns استفاده کنید.
ولی یک راه حل ساده تر استفاده از تابع SQL_Variant_Property هست . درواقع این تابع مشخصات مقادیر از نوع SQL_Variant رو بهتون میده . با این تابع ، نوع فیلد ، طول فیلد ، Collation ، Total Byte, Maxlength رو میتوونید مشخص کنید.
به این مثال توجه کنید.
Use AdventureWorks2019
go
select SQL_VARIANT_PROPERTY(Name,'BaseType'),
SQL_VARIANT_PROPERTY(Name,'TotalBytes'),
SQL_VARIANT_PROPERTY(Name,'MaxLength')
from Production.Product
Go
با این کد هم نوع فیلد Name مشخص میشه هم تعداد بایتی که در هر رکورد ذخیره شده برای اون فیلد و هم ماکزیمم اون فیلدرو نشون میده.
امیدوارم لذت برده باشین.
شاد و پرانرژی باشید☺️☺️
حمیدرضا صادقیان
@Hamidreza_Sadeghian
#SQL_Variant_Property
#TSQL_Tips