Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MSSQL][SQL]Wskazać kolumne w której dopasowało pattern
Forum PHP.pl > Forum > Przedszkole
fate
Witam ma cos takiego ORów było 20+ bo tyle jest kolumn w tabeli
  1. SELECT *
  2. FROM [dbo].[Clients_Loc]
  3.  
  4. WHERE [CWelcomeMsg] LIKE '%www.%'
  5. OR
  6. [CInfo] LIKE '%www.%'
  7. OR
  8. [COrder] LIKE '%www.%'
  9. OR
  10. [CResignation] LIKE '%www.%'
  11. OR
  12. [CAddAccount] LIKE '%www.%'


W wyniku dostaje 4 kolumny
Jak zrobić zeby wskazac sobie w ktorej kolumnie dopasowalo pattern a pozostale komorki zeby byly np puste? Najlepiej jak cała kolumna bylaby pusta to tez ja pominac w wyniku czarodziej.gif
Czy to jest do zrobienia w SQL? jakiś warunek po SELECT

Nie mam TSQL nie wiem co to.
Niechcialbym robic oddzielnych zapytań dla każdej kolumny.

2 pytanie
jaka jest konstrukcja zeby wymienic te kolumny po przecinku a nie sie tak powtarzac thumbsdownsmileyanim.gif
trueblue
  1. SELECT kolumna_1 LIKE '%www.%' AS dopasowanie_w_kolumne_1,kolumna_2 LIKE '%www.%' AS dopasowanie_w_kolumne_2 FROM tabela
fate
Witam
Microsoft SQL Server Managment Studio
krzyknął:

Msg 156, Level 15, State 1, Line 2
Incorrect syntax near the keyword 'LIKE'.

Troche pokombinował i nadal idento.

  1. SELECT [LClient],[Culture],
  2. [CWelcome] LIKE '%www.%' AS '1',
  3. [CInfo] LIKE '%www.%' AS '2',
  4. ...


Czy to jest kwestia jakiejś konfiguracji środowiska? "Rodzaju" DB? graduated.gif
pawwin
Nie wiem czy dokładnie o to chodziło ale to zapytanie zwróci Ci nazwę kolumny w której znalazł się szukany tekst:
  1. SELECT
  2. CASE WHEN CInfo LIKE '%www.%' THEN 'CInfo'
  3. WHEN COrder LIKE '%www.%' THEN 'COrder'
  4. WHEN CResignation LIKE '%www.%' THEN 'CResignation '
  5. ELSE NULL
  6. END AS dopasowana_kolumna
  7. FROM [dbo].[Clients_Loc]
  8. WHERE CASE WHEN CInfo LIKE '%www.%' THEN 'CInfo'
  9. WHEN COrder LIKE '%www.%' THEN 'COrder'
  10. WHEN CResignation LIKE '%www.%' THEN 'CResignation '
  11. ELSE NULL
  12. END IS NOT NULL
fate
Dokładnie tak, dogrzebałem sie do tych ifów ale niezakumałem jakby tego użyć, dzieki!

pawwin
dlaczego jak wywale 2 czesc tj.

  1. SELECT
  2. CASE WHEN CInfo LIKE '%www.%' THEN 'CInfo'
  3. WHEN COrder LIKE '%www.%' THEN 'COrder'
  4. WHEN CResignation LIKE '%www.%' THEN 'CResignation '
  5. ELSE NULL
  6. END AS dopasowana_kolumna
  7. FROM [dbo].[Clients_Loc]
  8. /*
  9.   WHERE CASE WHEN CInfo LIKE '%www.%' THEN 'CInfo'
  10.   WHEN COrder LIKE '%www.%' THEN 'COrder'
  11.   WHEN CResignation LIKE '%www.%' THEN 'CResignation '
  12.   ELSE NULL
  13.   END IS NOT NULL
  14. */


zwraca mi taki sam wynik, potrzebne to to?
pawwin
Jest to tylko warunek zwracający jedynie wiersze, w których wystąpiło dopasowanie, w przypadku braku tego fragmentu możesz dostać w odpowiedzi nullowe rekordy wink.gif
fate
Dzieki, załapałem.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.