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

SQL सर्वर में ट्रांसलेट फ़ंक्शन

संपादित:

मैं गूंगा महसूस कर रहा हूं - मैटबेली ने सही ढंग से बताया कि मेरा मूल समाधान गलत था। मैंने वास्तव में हमेशा सोचा था कि TRANSLATE('abc', 'abc', 'bcd') डीडीडी वापस करना था, लेकिन एसक्यूएल सर्वर 2017 के अनुवाद का परीक्षण करने के बाद मुझे लगता है कि 'बीसीडी' सही उत्तर होगा। आप इस पोस्ट के इतिहास को देखकर मेरा मूल (गलत संस्करण) देख सकते हैं। यहां एक अपडेट किया गया समाधान है जो ngrams8k का उपयोग करता है :

DECLARE
  @string varchar(8000)  = 'abc',
  @fromChar varchar(100) = 'abc', -- note: no mutation
  @toChar varchar(100)   = 'bcd';

SELECT newString = 
(
  SELECT CASE WHEN x>z THEN '' WHEN x>0 THEN s ELSE t END+''
  FROM dbo.ngrams8k(@string,1) ng
  CROSS APPLY (VALUES (charindex(ng.token,@fromChar),len(@toChar),ng.token)) x(x,z,t)
  CROSS APPLY (VALUES (ng.position, substring(@toChar,x.x,1))) xx(p,s)
  ORDER BY xx.p
  FOR XML PATH(''), TYPE
).value('(text())[1]', 'varchar(8000)');

रिटर्न> बीसीडी



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL मर्ज स्टेटमेंट

  2. एक इकाई फ्रेमवर्क मॉडल बनाना कई डेटाबेस फैलाता है

  3. आपके SQL सर्वर जटिलता को कम करने के लिए युक्तियाँ

  4. SQL सर्वर एजेंट कार्य स्वचालित रूप से कैसे प्रारंभ करें

  5. मैं किसी तालिका में किसी विशिष्ट कॉलम के पहले अक्षर कैसे निकालूं?