Zapytanie SQL

kapitan_rzbik
  • Rejestracja: dni
  • Ostatnio: dni
0

Jak wybrać z jakiejś tabeli wszystkie pola które zawierają np. litere t

Kopiuj
SELECT * FROM JakasTabela WHERE * LIKE '%t%';

to mi nie działa

Koziołek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Stacktrace
  • Postów: 6823
0
  1. Jaka baza
  2. WHERE * LIKE '%t%'; raczej nie ruszy. Musisz podać konkretne kolumny. Inaczej będą porównywane kolumny o typach liczbowych czy daty. Na nich taka operacja (bez jawnego rzutowania) na pewno się wysypie.
kapitan_rzbik
  • Rejestracja: dni
  • Ostatnio: dni
0
Koziołek napisał(a)
  1. Jaka baza

postgresql 8.3

johny_bravo
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
... where kol1 like '%t%' or kol2 like '%t%' or ...
kapitan_rzbik
  • Rejestracja: dni
  • Ostatnio: dni
0

chodziło mi o coś bardziej uniwersalnego, ale chyba sie nie da

crowa
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poznań
  • Postów: 295
0

napisz sobie procedure ktora zwroci warunek where jako varchar

Kopiuj
CREATE PROCEDURE(@TABLE sysname; @CONDITION VARCHAR)
BEGIN
  DECLARE @SQL VARCHAR(8000)
  SET @SQL = 
    'DECLARE COLS CURSOR FAST FORWARD FOR ' + 
    'SELECT name, xType FROM syscolumns WHERE id = OBJECT_ID(''' + @TABLE + '') '''

itd

a potem robisz sobie dodawanie kolejnych kolumn plus cast warunku ze wzgledu na typ kolumny

Z pamieci pisze wiec cos moze byc nie tak :)

Wynik takiej procedury stworzy Ci warunek postaci col1 = condition OR col2 = condition ...

johny_bravo
  • Rejestracja: dni
  • Ostatnio: dni
0

@crowa: autor mowil o postgresie, nie o TransactSQL.

@autor: ale podobna rzecz pewnie da sie tez zrobic w postgresie, PL/pgSQL jest dosc rozbudowany

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.