У меня есть две таблицы
CREATE TABLE LOGIN
(
[ID] INT NOT NULL IDENTITY(1,),
PASSWORD VARCHAR(30) NOT NULL,
CONSTRAINT [PK] PRIMARY KEY ([ID] ASC)
)
CREATE TABLE HASH
(
PSWDHASH VAR(100) NOT NULL
)
Здесь мы уже видим проблему: LOGIN
имеет два столбца, а HASH
— только один, а также тот факт, что столбец ID
в LOGIN
является INT
. и PSWDHASH
в HASH
является varchar
.
Мне нужно выполнить внедрение UNION SELECT
внутри этого запроса.
SELECT *
FROM login
WHERE passwd = '$input';
SELECT *
FROM login
WHERE passwd = ''
UNION
SELECT PSWDHASH, NULL AS col2
FROM HASH -- ';
Это приводит к ошибке
Ошибка преобразования при преобразовании значения varchar «b202c5234b» в тип данных int.
Как я могу обойти это? Самый простой способ — преобразовать ID
в таблице LOGIN
как varchar
, но SELECT *
предотвращает это. Я не могу использовать varchar
в качестве идентификатора. Могу ли я что-нибудь сделать с ORDER BY
? Могу ли я начать с столбца 2 в логине и столбца 1 в HASH?
1 ответ
Вы можете жестко закодировать первый столбец, который создает ошибку. Попытался ли ты
ВЫБЕРИТЕ 1 как столбец 1, PSWDHASH (в этом случае первый столбец будет int)
Вместо того
ВЫБЕРИТЕ PSWDHASH, значение null в качестве столбца 2?
Похожие вопросы
Новые вопросы
sql
Язык структурированных запросов (SQL) - это язык запросов к базам данных. Вопросы должны включать примеры кода, структуру таблицы, примеры данных и тег для используемой реализации СУБД (например, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 и т. Д.). Если ваш вопрос относится исключительно к конкретной СУБД (использует определенные расширения / функции), используйте вместо этого тег этой СУБД. Ответы на вопросы, помеченные SQL, должны использовать стандарт ISO / IEC SQL.