Wyszukiwanie wielu wartości w wielu ciągach znaków i zwracanie konkretnej wartości z kolumny dla danego wyniku

0

Witam wszystkich,

proszę o pomoc przy stworzeniu query, której zadaniem byłoby pobranie listy wartości z kolumny Name (tabela CI) i sprawdzenie po kolei (lub index?) czy w innej kolumnie Description (tabela Full data) znajdują się one w ciągu znaków.

Jeśli dany ciągu znaków istnieje, niech kwerenda zwróci wartości z kolumny o nazwach 2,** 3** ,4 z tabeli CI.

Udało mi sie stworzyć rozwiązanie w VBA za pomocą pętli ale niestety działa to bardzo długo.

Pozdrawiam serdecznie.

0

Nie do końca rozumiem ale chyba o coś takiego Ci chodzi

select c.2, c3, c.4
  from CL c
 where exists (select 1 from CL l where l.description like '%'+c.name'%') 

Można też kombinować z IN, with itd ale bez dokładnego ddl, przykładowego zestawu danych lub chociażby dystrybucji bazy danych będzie ciężko coś więcej doradzić.

0

Cześć

Dzięki za odpowiedź, dobrze zrozumialeś, ale pojawia się bląd przy uruchomieniu query:

'''Msg 102, Level 15, State 1, Line 9 
'''Incorrect syntax near '%'.

Może chodzić o znak "+" ?

Używam:
Microsoft SQL Server Management Studio 12.0.2000.8

Wiecie może jak to rozwiązac?

Dla ułatwienia dołaczam plik. Ciąg znaków w kolumnie Description jest przeszukiwany przez wartości z kolumny Name. Jeśli wartość jest znaleziona => kolumny obok Description (Name,1,2,3) sa wypełnione odpowienimi wartościami z zakładki CIs.
<http://
www.megafileupload.com/888k/Example.xlsx>

0
Funaki napisał(a):

Może chodzić o znak "+" ?

Tak, brakuje go.

0

Ok błędu nie ma ale obawiam się ze wynik nie jest taki jak oczekiwałem. Wydaje mi sie że powinien być tu jakiś JOIN, jako że dane są w dwóch tabelach, ale mogę się mylić. Raczkuję w temacie SQL.

Dzięki za dotychczasową pomoc i proszę o więcej:)
Załączony plik w poprzednim wpisie (http://www.megafileupload.com/888k/Example.xlsx) powinien wiecej wyjaśnić. (Jak w pliku - każda zakładka to inna tabela).

Pozdrawiam

0

Możesz spróbować

WHERE CHARINDEX(UPPER(c.name), UPPER(l.description)) > 0

ale najlepiej by było jakbyś wrzucił przykładowy zestaw danych na http://sqlfiddle.com/ to podpowiem coś konkretniej

0

Mam nadzieje, że o to chodziło. http://sqlfiddle.com/#!9/cac9a.

I teraz wartości z Name mają być szukane w Description. Jeśli się znajduje niech pokaże - Description, znaleziony_name, Misto, Woj i kraj dla danego Name.

1

@Funaki: To ma być na MS SQL?

Jeśli tak to:


Select 
  *
 From
     ci
     inner join fulldata fd on  fd.Description like '%'+ci.name+'%'
0

Witajcie,
sory za późną odpowiedź (powrót po urlopie).
@Panczo o to własnie chodziło.

A wiecie może jak zrobić tak, aby szukane wyrażenie było całe znalezione nawet jeśli zawiera spacje?
Już wyjaśniam...

szukana fraza "jak leci"- wynik-> ** jak wczoraj, ale mogło być lepiej**, czyli znajduje słowo jak i już mu pasuje, a chcę żeby znajdowałą całą fraze jak leci w danym opisie. :)

Dziękuje wszystkim za pomoc!

1 użytkowników online, w tym zalogowanych: 0, gości: 1