Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak usunąć określony znak z ciągu, tylko gdy jest to pierwszy lub ostatni znak w ciągu.

Jednym ze sposobów radzenia sobie z takim „przycinaniem” przecinków jest użycie CASE oświadczenie:

CASE
    WHEN str LIKE ',%,' THEN SUBSTRING(str, 2, LEN(str)-2)
    WHEN str LIKE ',%'  THEN RIGHT(str, LEN(str)-1)
    WHEN str LIKE '%,'  THEN LEFT(str, LEN(str)-1)
    ELSE str
END

To jest bardzo oczywiste:CASE oświadczenie uwzględnia trzy sytuacje -

  • Kiedy ciąg str ma przecinki po obu stronach,
  • Kiedy ciąg str zaczyna się przecinkiem, ale nie kończy się jednym i
  • Kiedy ciąg str kończy się przecinkiem, ale nie zaczyna się od jednego.

W pierwszym przypadku usuwany jest pierwszy i ostatni znak; w drugim przypadku skrajny lewy znak jest usuwany; w ostatnim przypadku znak końcowy jest usuwany.

Demo na sqlfiddle.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak edytować opcje serwera połączonego za pomocą T-SQL

  2. konwersja typu danych varchar na typ danych datetime spowodowała otrzymanie wartości spoza zakresu

  3. Dlaczego otrzymuję, że dostawca danych lub inna usługa zwróciła status E_FAIL? Natywny klient SQL

  4. BULK INSERT z kolumną tożsamości (auto-inkrementacja)

  5. Dane pionowe SQL Server 2008 na poziome