Mysql: рд╕реНрд▓рд╛рдЗрд╕ рдХреЗ рд╕рд╛рде `?` рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 22 рдирд╡ре░ 2013  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: go-sql-driver/mysql

рдРрд╢реЗ рд╣реА:
рдЪрдпрди рдХрд░реЗрдВ * рдХрд┐рд╕ рдЬрдЧрд╣ рд╕реЗ (?)

рдЬрдм рдореИрдВ рдХреНрд╡реЗрд░реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ db.Query (sSql, vArgs ...) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдЗрдирдкреБрдЯ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ?
рдЗрд╕ рддрд░рд╣ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ: "рдП, рдмреА, рд╕реА"?
рдпрд╛ рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ: [рдП, рдмреА, рд╕реА]?
рдпрд╛ рдЗрд╕ рддрд░рд╣ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдХреЗ рд░реВрдк рдореЗрдВ: ["рдП", "рдмреА", "рд╕реА"]?

рдХрд┐ `рд╕рдм рд╡рд┐рдлрд▓, рд░реЛрдирд╛ ...

duplicate question working as intended

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдпрд╣ # 107 рдХрд╛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣реИред

рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдПрдХ ? рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдмрдпрд╛рди рдХреА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЬрдирд╛ рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рдХреБрдЫ рднреА рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЕрдкреВрд░реНрдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ):

  • рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдореВрд▓реНрдп (рд╕реНрд▓рд╛рдЗрд╕, рдирдХреНрд╢реЗ, ...) : arrow_backward: рдпрд╣ рдЖрдкрдХреА рдЧрд▓рддреА рд╣реИ
  • рдПрд╕рдХреНрдпреВрдПрд▓ рдХреАрд╡рд░реНрдб
  • SQL рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ (рд╕реНрдХреАрдорд╛, рддрд╛рд▓рд┐рдХрд╛ рдФрд░ рд╕реНрддрдВрдн рдирд╛рдо)
  • рдХреНрд░рдордмрджреНрдз рдЖрджреЗрд╢

рдЖрдкрдХреЛ рдЕрдкрдиреА рдХреНрд╡реЗрд░реА рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреА рд╣реЛрдЧреАред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣рдореЗрд╢рд╛ 3 рддрд░реНрдХ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдмрдирд╛рдПрдВ
SELECT * FROM TABLE WHERE A IN (?, ?, ?) ред
рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдЖрдкрдХреЛ рд╕реНрд▓рд╛рдЗрд╕ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреНрд╡реЗрд░реА рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреА рд╣реЛрдЧреАред

рд╕рднреА 5 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпрд╣ # 107 рдХрд╛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣реИред

рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдПрдХ ? рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдмрдпрд╛рди рдХреА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЬрдирд╛ рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рдХреБрдЫ рднреА рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЕрдкреВрд░реНрдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ):

  • рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдореВрд▓реНрдп (рд╕реНрд▓рд╛рдЗрд╕, рдирдХреНрд╢реЗ, ...) : arrow_backward: рдпрд╣ рдЖрдкрдХреА рдЧрд▓рддреА рд╣реИ
  • рдПрд╕рдХреНрдпреВрдПрд▓ рдХреАрд╡рд░реНрдб
  • SQL рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ (рд╕реНрдХреАрдорд╛, рддрд╛рд▓рд┐рдХрд╛ рдФрд░ рд╕реНрддрдВрдн рдирд╛рдо)
  • рдХреНрд░рдордмрджреНрдз рдЖрджреЗрд╢

рдЖрдкрдХреЛ рдЕрдкрдиреА рдХреНрд╡реЗрд░реА рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреА рд╣реЛрдЧреАред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣рдореЗрд╢рд╛ 3 рддрд░реНрдХ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдмрдирд╛рдПрдВ
SELECT * FROM TABLE WHERE A IN (?, ?, ?) ред
рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдЖрдкрдХреЛ рд╕реНрд▓рд╛рдЗрд╕ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреНрд╡реЗрд░реА рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреА рд╣реЛрдЧреАред

рд╣рд╛рдп Arnehormann рдЖрдкрдХреЗ рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЕрдЧрд░ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ "рд╕реЗ рдЪрдпрди рдХрд░реЗрдВ * рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ (?;?)?", рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рддрдиреЗ рдкреИрд░рд╛ рд╣реИ? рд▓реЗрдХрд┐рди рдЖрдорддреМрд░ рдкрд░ рдореИрдВ рдбреЙрди `t рдкрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рддрдиреЗ рдкреИрд░рд╛ рд╡рд╣рд╛рдБ рд╣реИ? рдореИрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЗрдирдкреБрдЯ рдкреИрд░рд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ

рдЬреА рд╢реБрдХреНрд░рд┐рдпрд╛
рдпреВ рдХреЗ рд▓рд┐рдП рдмреНрд░ред

@ рдЬрд╝реЛрд╣реЛрдИ-рдХреЗрд╡рд┐рди, рдЬрдм рддрдХ рдореИрдВ рдХреБрдЫ рдпрд╛рдж рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдЖрдк рдХрд┐рддрдиреЗ рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд╣рд╛рдБ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдпрд╛ рддреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрд░реНрдЧ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдкрддрд╛ _always_ Query() рдпрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ s... рддреЛ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдЬреНрдЮрд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░ рдХреА рд╕рд╣реА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдХреНрд╡реЗрд░реА рдмрдирд╛ http : //play.golang.org/p/mA2KwolV-n

рдЗрд╕реЗ рдкрдврд╝рдиреЗ рд╕реЗ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЕрдм рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред
рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рддреЛ рдЖрдк ? рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдХреБрдЫ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ

if len(inValues) > 0 {
    query = "SELECT * FROM " + table + " WHERE " + column +
        " IN (?" + strings.Repeat(",?", len(inValues)-1)) + ")"
    ....
}

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдзрдиреНрдпрд╡рд╛рдж @DisposaBoy, рдХрд┐ рд▓рдЧрддрд╛ рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рдкрд░рд┐рдЪрд┐рдд: +1:

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░рд╛ рджрд┐рдорд╛рдЧ рдирд╣реАрдВ рд╣реИ :) рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред

2013-11-22 19:06:15 рдкрд░, "рдЕрд░реНрдиреЗ рд╣реЙрд░рдореИрди" рд╕реВрдЪрдирд╛рдПрдВ @github.com рдиреЗ рд▓рд┐рдЦрд╛:

рдЗрд╕реЗ рдкрдврд╝рдиреЗ рд╕реЗ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЕрдм рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред
рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдХреБрдЫ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ

iflen (inValues)> 0 {query = "Select * FROM" + table + "WHERE" + рдХреЙрд▓рдо + "IN (?" + str ..Repeat ("?"; len (inValues) -1)) "") ..? ..}

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

AlekSi picture AlekSi  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

tnerolftnerolf picture tnerolftnerolf  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

xuewindy picture xuewindy  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

julienschmidt picture julienschmidt  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Dieterbe picture Dieterbe  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ