কখনও কখনও আমি আমাদের কিছু ডাটাবেসে অবজেক্টের নাম (সনাক্তকারী) সঞ্চয় করি, উদাহরণস্বরূপ কিছু প্যারামিটার সারণিতে। যেহেতু আমি এই টেবিলগুলি থেকে '=' বা 'লাইক' তুলনা অপারেটরগুলি ব্যবহার করে রেকর্ড নির্বাচন করি, তাই অবশ্যই এই নামগুলি সর্বদা বন্ধনীর সাথে বা ছাড়াই সংরক্ষণ করার জন্য আমাকে যত্নবান হতে হবে ।
IF EXISTS (SELECT 1 FROM MYTABLE WHERE OBJ_NAME = '[TABLE_NAME]';
অথবা
IF EXISTS (SELECT 1 FROM MYTABLE WHERE OBJ_NAME = 'TABLE_NAME';
তবে এমএস-এসকিউএলের কিছু ফাংশন রয়েছে যেখানে আপনি বন্ধনীর সাথে বা ছাড়াই অবজেক্টের নাম ব্যবহার করতে পারেন, উদাহরণস্বরূপ OBJECT_ID () ফাংশন। আমি dbfiddle.uk এ একটি ন্যূনতম উদাহরণ স্থাপন করেছি ।
CREATE TABLE TEST
(
ID INT IDENTITY(1,1) PRIMARY KEY,
OBJECT sysname NOT NULL
);
GO
INSERT INTO TEST VALUES ('[obj1]'),('obj2'),('obj3'),('[obj4]');
GO
টেবিলে TEST এইভাবে উপস্থিত রয়েছে কিনা তা পরীক্ষা করতে আমি এখন OBJECT_ID () ব্যবহার করতে পারি:
IF OBJECT_ID('TEST') IS NOT NULL
BEGIN
SELECT 'TEST EXISTS.' OBJECT_ID;
END
GO
| OBJECT_ID |
| :----------- |
| TEST EXISTS. |
IF OBJECT_ID('[TEST]') IS NOT NULL
BEGIN
SELECT '[TEST] EXISTS.' OBJECT_ID;
END
GO
| OBJECT_ID |
| :------------- |
| [TEST] EXISTS. |
আমি শনাক্তকারী TEST টি বন্ধনী সহ বা ছাড়াই পাস করি না, পার্সার ব্র্যাকেটগুলি অপসারণ করার জন্য যথেষ্ট স্মার্ট।
ঠিক আছে, আমি এটি একটি স্কেলার ফাংশন যোগ করে তা অনুকরণ করতে পারি যা একটি স্ট্রিং থেকে বন্ধনীগুলি সরিয়ে দেয়:
CREATE FUNCTION UNQUOTENAME(@TXT NVARCHAR(MAX))
RETURNS NVARCHAR(MAX)
AS
BEGIN
RETURN IIF(LEFT(@TXT, 1) = N'[' AND RIGHT(@TXT, 1) = N']',
SUBSTRING(@TXT, 2, LEN(@TXT) - 2),
@TXT);
END;
GO
এবং তারপরে এটি ব্যবহার করুন:
SELECT dbo.UNQUOTENAME (N'[FIELD]') NAME1, N'FIELD' NAME2;
GO
NAME1 | NAME2
:---- | :----
FIELD | FIELD
SELECT ID, OBJECT
FROM TEST
WHERE OBJECT LIKE 'obj%';
GO
ID | OBJECT
-: | :-----
2 | obj2
3 | obj3
SELECT ID, dbo.UNQUOTENAME(OBJECT)
FROM TEST
WHERE dbo.UNQUOTENAME(OBJECT) LIKE 'obj%';
GO
ID | (No column name)
-: | :---------------
1 | obj1
2 | obj2
3 | obj3
4 | obj4
তবে আমার প্রশ্নটি হ'ল:
- টি-এসকিউএল ব্যবহার করে বন্ধনীগুলি সরিয়ে এমন কোনও লুকানো অন্তর্নির্মিত কার্য রয়েছে?
এখানে ডিবিফিডল
[
এবং]
এবং কোন প্রতিস্থাপন]]
সঙ্গে]