Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर में किसी मौजूदा कॉलम को कंप्यूटेड कॉलम में बदलें (T-SQL उदाहरण)

यह आलेख दर्शाता है कि किसी मौजूदा कॉलम को SQL सर्वर में परिकलित कॉलम में बदलने के लिए T-SQL का उपयोग कैसे करें।

एक गणना कॉलम एक वर्चुअल कॉलम है जो इसके मूल्य की गणना करने के लिए एक अभिव्यक्ति का उपयोग करता है। व्यंजक आम तौर पर अन्य स्तंभों के डेटा का उपयोग करेगा। एक परिकलित स्तंभ तालिका में भौतिक रूप से तब तक संग्रहीत नहीं किया जाता है जब तक कि उस पर PERSISTED चिह्नित न किया गया हो ।

उदाहरण 1 - गणना किए गए कॉलम के बिना तालिका बनाएं

सबसे पहले, आइए एक टेबल बनाएं बिना एक परिकलित कॉलम।

CREATE TABLE Person
  (
    PersonID int IDENTITY (1,1) NOT NULL,
    FirstName varchar(70), 
    LastName varchar(70),
    FullName varchar(140)
  );

INSERT INTO Person (FirstName, LastName, FullName)
VALUES 
  ('Homer', 'Seinfeld', 'Homer Seinfeld'),
  ('Bart', 'Costanza', 'Bart Costanza'),
  ('Marge', 'Kramer', 'Marge Kramer');

SELECT *
FROM Person;

परिणाम:

+------------+-------------+------------+----------------+
| PersonID   | FirstName   | LastName   | FullName       |
|------------+-------------+------------+----------------|
| 1          | Homer       | Seinfeld   | Homer Seinfeld |
| 2          | Bart        | Costanza   | Bart Costanza  |
| 3          | Marge       | Kramer     | Marge Kramer   |
+------------+-------------+------------+----------------+

आप देख सकते हैं कि जब मैं डेटा डालता हूं तो मैं दोगुना हो जाता हूं। पूरा नाम प्रथम नाम और अंतिम नाम का एक संयोजन है, और मैं प्रत्येक पंक्ति के लिए इस डेटा को फिर से टाइप कर रहा हूं।

यह तालिका को अपडेट करते समय समस्याएँ भी पैदा कर सकता है। जब भी कोई अपना पहला या दूसरा नाम बदलता है (और अगर वे दोनों को बदलते हैं तो तीन कॉलम) मुझे दो कॉलम अपडेट करना याद रखना होगा।

परिकलित कॉलम के लिए यह एक अच्छा उम्मीदवार है।

उदाहरण 2 - कॉलम को कंप्यूटेड कॉलम में बदलें

किसी कॉलम को परिकलित कॉलम में बदलने के लिए, आपको पहले कॉलम को छोड़ना होगा, फिर उसे नई परिभाषा के साथ बनाना होगा।

FullName बदलने का तरीका यहां दिया गया है परिकलित कॉलम में कॉलम।

ALTER TABLE Person DROP COLUMN FullName;

ALTER TABLE Person ADD FullName AS (CONCAT(FirstName, ' ', LastName));

हमने FullName . नाम के कॉलम को अभी "बदला" है एक गणना कॉलम के लिए। यह FirstName . को जोड़ता है और LastName कॉलम।

जब हम तालिका की सामग्री का चयन करते हैं तो यहां क्या होता है:

SELECT *
FROM Person;

परिणाम:

+------------+-------------+------------+----------------+
| PersonID   | FirstName   | LastName   | FullName       |
|------------+-------------+------------+----------------|
| 1          | Homer       | Seinfeld   | Homer Seinfeld |
| 2          | Bart        | Costanza   | Bart Costanza  |
| 3          | Marge       | Kramer     | Marge Kramer   |
+------------+-------------+------------+----------------+

उदाहरण 3 - एक मान अपडेट करें

अब, यदि कोई मान FirstName . में अपडेट किया गया है या LastName कॉलम, यह गणना किए गए कॉलम द्वारा लौटाए गए मान को प्रभावित करेगा। इसे दो कॉलम में अपडेट करने की आवश्यकता नहीं है।

उदाहरण:

UPDATE Person
SET LastName = 'Bourne'
WHERE PersonId = 3;

SELECT *
FROM Person;

परिणाम:

+------------+-------------+------------+----------------+
| PersonID   | FirstName   | LastName   | FullName       |
|------------+-------------+------------+----------------|
| 1          | Homer       | Seinfeld   | Homer Seinfeld |
| 2          | Bart        | Costanza   | Bart Costanza  |
| 3          | Marge       | Bourne     | Marge Bourne   |
+------------+-------------+------------+----------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सी # में बिगिंट के बराबर क्या है?

  2. एसक्यूएल - पदानुक्रम को कैसे स्टोर और नेविगेट करें?

  3. कॉलम के लिए SQL पंक्तियाँ

  4. SQL केस संवेदनशील स्ट्रिंग तुलना करें

  5. डेटाबेस में पासवर्ड को सुरक्षित तरीके से कैसे स्टोर करें?