2016-03-28 13 views
0

Sütun Kimliği, Id_purchase ve Id_employee içeren bir tablo var [seçim]. Kimlik birincil anahtardır ve hepsi int türüdür.SQL Server, başka bir tabloda belirtilen sözcükleri bulup değiştir

Id | Id_purchase | Id_employee 
1 |  1  | 1 

bir tablo [çalışan] Id_employee (int) sahiptir ve adı varchar (250)

Id_employee | name 
1   | name1 
2   | name2 
3   | name3 

bir tablo [satın] sahip Id_purchase (int) ve nesne (250)

varchar
Id_purchase |  article 
    1  | book1 pattern ABC 
    2  | book2 autor hjk abc 
    3  | book3 about xyz 
    4  | book4 JJJJ 

ve bir tablo [key_search] kimliği vardır ve sorgu varchar'dır (100). [Çalışanları] dan her bir çalışan için tabloya eklemek için kayıt oluşturmak Nasıl

ID | query 
1 | book*abc 
2 | book*about 

[seçimi] masanın [key_search] bahsedilen kelimeler vardır ki tablo [Purchase] tüm satın alma işlemlerinin kimlikleri. Bir tabloda [key_search] "*", herhangi bir sayıdaki karakterin yerini alır. Örnek için "book * abc" gibi bir sorgu, tüm satın alma işlemlerinde "% book% abc%" kitaplığına DEĞİŞTİRİLMELİDİR. Belki böyle

+0

Daha netleştirmek lütfen bu bölümü "Nasıl her çalışanın tabloya eklemek için [seçimi] kimlikleri masanın [satın Alma] hangi * herhangi bir karakter sayısı için bir alternatif olarak değerlendirilmemelidir bir tablo [key_search] işareti olarak masaya [key_search]. belirtilen kelimeler var tüm yeni alımları." – TheGameiswar

+0

Düz 'SQL' ile bu bir acı olacaktır. Dize ve bir desen alacak 'CLR' işlevini arayın. Daha sonra C# kodundaki değiştirme mantığını yapın ve düzenlenmiş değeri döndürün. Muhtemelen size kullanacağı maç için kontrol etmek için 2 'CLR' fonksiyonları, bir ihtiyacınız olacak' fıkra ve ikinci içindir WHERE' sen UPDATE' maddesi 'kullanacağı, hangi değiştirin. –

+0

Evet, CLR işlevi kolaydır, ancak yalnızca sql çözümlemesi gerekir. –

cevap

1

: Mevcut örnek için

SELECT p.Id_purchase, 
     e.Id_employee 
FROM employees e 
CROSS JOIN purchase p 
INNER JOIN key_search k 
    ON p.article LIKE '%' + REPLACE(k.[query],'*','%') + '%' 

, sonucu şöyle: ait

| Id_purchase | Id_employee | 
|-------------|-------------| 
|   1 |   1 | 
|   1 |   2 | 
|   1 |   3 | 
|   2 |   1 | 
|   2 |   2 | 
|   2 |   3 | 
|   3 |   1 | 
|   3 |   2 | 
|   3 |   3 |