sql >> Databáze >  >> RDS >> Sqlserver

Najděte index posledního výskytu podřetězce pomocí T-SQL

Přímým způsobem? Ne, ale použil jsem obrácený postup. Doslova.

V předchozích rutinách jsem k nalezení posledního výskytu daného řetězce použil funkci REVERSE(), po níž následoval CHARINDEX, následovaný opět REVERSE, abych obnovil původní pořadí. Například:

SELECT
   mf.name
  ,mf.physical_name
  ,reverse(left(reverse(physical_name), charindex('\', reverse(physical_name)) -1))
 from sys.master_files mf

ukazuje, jak extrahovat skutečné názvy databázových souborů z jejich „fyzických jmen“, bez ohledu na to, jak hluboko jsou vnořeny v podsložkách. Toto vyhledá pouze jeden znak (zpětné lomítko), ale můžete na tom stavět pro delší vyhledávací řetězce.

Jedinou nevýhodou je, že nevím, jak dobře to bude fungovat na datových typech TEXT. Používám SQL 2005 již několik let a již nejsem obeznámen s prací s TEXTem – ale zdá se mi, že si vzpomínám, že byste na něm mohli používat LEFT a RIGHT?

Filip



  1. PHP PDOException:SQLSTATE[HY093]:Neplatné číslo parametru

  2. Jak exportovat data serveru SQL z tabulky do souboru CSV

  3. Nesprávná hodnota řetězce při pokusu o vložení UTF-8 do MySQL přes JDBC?

  4. Rozdíl mezi SET autocommit=1 a START TRANSACTION v mysql (Přehlédl jsem něco?)