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

SQL Server 2008 - oddělující pole Adresa

Analýza řetězců v SQL je chaotická a má tendenci být křehká. Obvykle si myslím, že je nejlepší dělat tyto druhy úkolů mimo SQL úplně. To znamená, že vzhledem k výše uvedené mini specifikaci je možné analyzovat data do požadovaných polí takto:

select 
  left(PostalAddress, charindex('^', PostalAddress) - 1) as street_address,
  left(second_part, len(second_part) - charindex(' ', reverse(second_part))) as suburb,
  right(second_part, charindex(' ', reverse(second_part))) as state,
  reverse(substring(reverse(PostalAddress), 2, 4)) as postal_code
from (
  select
    PostalAddress,
    rtrim(reverse(substring(reverse(PostalAddress), 6, len(PostalAddress) - charindex('^', PostalAddress) - 5))) as second_part
  from Addresses
) as t1

Všimněte si, že budete muset nahradit název vaší tabulky za to, co jsem nazval adresy ve výše uvedeném dílčím dotazu.

Můžete to vidět v akci proti vašim ukázkovým datům zde .



  1. Jak mohu napsat uživatelsky definovanou funkci v MySQL tak, že když odstraním řádek z jedné tabulky, bude tento konkrétní řádek smazán také z jiné tabulky?

  2. MySQL databáze atributů

  3. Jak provést tento SQL dotaz pomocí ADO.NET?

  4. Jak změnit databázi na postgresql pomocí Symfony 2.0?