Fråga : Alla Mysql lagrade proc passerar värderar hjälp

Hi har guys.

I fäst ett lagrat lager för procedure.
For, brännmärker, avgår, subd, produkten, categtyg, säsongen och köpparametrar, om ALLA jag önskar VÄRDERAR,
Is där ett lättare snabbare långt därefter, using REGEXP och bortgång det eg. ”[- 0-9]” i appellen för everything.

is där a långt precis INTE att inkludera parametern, så allt är passed.

Like, om BRÄNNMÄRKA = '' passerar därefter den allt.

Hope som gör avkänning.
Kj
> för
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
" codeBody " " >DELIMITER $$ för class= " för
" klar "

Svar : Alla Mysql lagrade proc passerar värderar hjälp

och s.storenumber I (”, LAGRET,”) ”,
     FALL, NÄR concat för "" för BRAND=-"" annan (”och s.brandnumber I (”, BRÄNNMÄRKA, ”),”) AVSLUTAR därefter,
”och s.deptcode REGEXP”, AVRESA, ”,

Godkännande I missa en AVSLUTA.
I stort, vad det hjälpmedel är, på delen var du tillfogar normalt stränga

och s.brandnumber I (”, BRÄNNMÄRKA,”),

Till din fulla SQL den kontrollerar för huruvida brännmärker är "".  Om den är tom, den tillfogar ingenting till finalqueryen.  Se FALLET fodra precis, det gör detta:

     FALL NÄR BRAND=-"" därefter
         "",
     annars
         concat (”och s.brandnumber I (”, BRÄNNMÄRKA, ”),”)
     AVSLUTA,

Så den endera tillfogar ”, och s.brandnumber i ()”, om brännmärka filtrerar inte är tom eller ingenting (och därför den hela sqlen inte filtrerar på brännmärker).

Låt mig veta, om detta är oklart.
Andra lösningar  
 
programming4us programming4us