У меня настроена база данных MS SQL 2017, и я отправляю RFID-теги в таблицу, а затем запрашиваю таблицу, чтобы узнать, существует ли пользователь в системе.
Я получаю ошибку:
'Ошибка арифметического переполнения при преобразовании varchar в тип данных numeric'.
Я пытался изменить тип 'rfid_id' на VARCHAR (MAX), но безуспешно.
Мой стол:
CREATE TABLE worker_table ('worker_id INT IDENTITY(1,1) PRIMARY KEY,
rfid_id VARCHAR(30) NOT NULL,
worker_customer_name VARCHAR(30) NOT NULL,
site_id INTEGER NOT NULL REFERENCES site_table(site_id))
Это отлично работает.
Данные, которые я вставляю в таблицу для данного RFID:
INSERT INTO worker_table(rfid_id, worker_customer_name, site_id, worker_id
VALUES ($'10103967375$', $'USER_1$', $'1$', $'1'))
Это также хорошо работает для большинства меток RFID.
Однако некоторые теги имеют разную длину, например, 330004531017 или 9600007487626. Некоторые теги пишут ОК в базу данных, но некоторые возвращают ошибку.
Также, если я запрашиваю базу данных с помощью:
SELECT CASE WHEN EXISTS(SELECT * FROM worker_table WHERE rfid_id =9600007487626) THEN 100 ELSE 200 END)
Это нормально работает для большинства тегов, но возвращает ту же ошибку для некоторых.
PS В настоящее время я отправляю rfid_id в виде строки из моего ПЛК.
Мои знания по SQL ограничены, поэтому любая помощь будет принята с благодарностью.