کاربرد تابع ASCII در SQL Server: بازیابی مقدار اسکی کاراکترها برای پاکسازی و تحلیل داده
تابع ASCII در SQL Server مقدار اسکی اولین (چپترین) کاراکتر یک عبارت کاراکتری را برمیگرداند. این تابع برای کار با مقادیر اسکی کاراکترها در پایگاه داده SQL بسیار مفید است.
این تابع یک عبارت کاراکتری را به عنوان ورودی میگیرد و مقدار اسکی معادل آن را برمیگرداند:
ASCII (character_expression)
در اینجا character_expression میتواند از انواع دادهای مانند NVARCHAR، VARCHAR، CHAR یا NCHAR باشد. این تابع همیشه یک مقدار INTEGER (عدد صحیح) برمیگرداند.
در ادامه مثالهایی از تابع ASCII در SQL Server با کاراکترهای تکی ارائه شده است:
SELECT ASCII('A') AS AsciiValue;
هنگامی که یک رشته به تابع ASCII ارسال میشود، این تابع مقدار اسکی اولین (چپترین) کاراکتر آن رشته را برمیگرداند:
SELECT ASCII('Hello') AS AsciiValue;
اگر یک مقدار NULL به تابع ASCII ارسال شود، خروجی آن نیز NULL خواهد بود:
SELECT ASCII(NULL) AS AsciiValue;
ارسال یک رشته خالی به تابع ASCII، مقدار 0 را برمیگرداند:
SELECT ASCII('') AS AsciiValue;
تابع ASCII در SQL Server در سناریوهای مختلفی مفید است، از جمله:
* **پاکسازی داده:** برای شناسایی و حذف کاراکترهای ناخواسته یا غیرقابل چاپ از دادهها میتوان از تابع ASCII استفاده کرد. به عنوان مثال، میتوانید کاراکترهای کنترل با مقدار اسکی کمتر از 32 را شناسایی و حذف کنید.
SELECT ColumnName, ASCII(SUBSTRING(ColumnName, 1, 1)) AS FirstCharASCII FROM YourTable WHERE ASCII(SUBSTRING(ColumnName, 1, 1)) < 32;
* **اعتبارسنجی داده:** برای اطمینان از اینکه دادهها فقط شامل کاراکترهای مجاز هستند، تابع ASCII به کار میرود. به عنوان مثال، بررسی کنید که آیا مقادیر فقط شامل اعداد یا حروف هستند:
SELECT ProductName FROM Products WHERE ASCII(SUBSTRING(ProductName, 1, 1)) BETWEEN 48 AND 57; -- Starts with a number
* **بررسی کاراکترهای خاص:** برای شناسایی وجود کاراکترهای خاص مانند شکست خط (line breaks) یا تب (tabs) در یک رشته، تابع ASCII کاربرد دارد:
SELECT Comments FROM Feedback WHERE ASCII(Comments) = 13 OR ASCII(Comments) = 10; -- Checks for Carriage Return or Line Feed
**تابع مرتبط: CHAR**
تابع CHAR در SQL Server عملکردی معکوس تابع ASCII دارد. این تابع یک مقدار عدد صحیح (INTEGER) اسکی را به کاراکتر متناظر آن تبدیل میکند:
SELECT CHAR(65) AS CharacterValue;
SELECT CHAR(ASCII('B')) AS CharacterValue;