#sql #sqlite
#sql #sqlite
Вопрос:
Какой тип оплаты для всех кодов заданий, начинающихся с ’03’? имя таблицы- salary_range_by_job_classification.
код:
Select
job_code,
pay_type
FROM salary_range_by_job_classification
WHERE job_code= 03%
СООБЩЕНИЕ ОБ ОШИБКЕ: рядом с «%»: синтаксическая ошибка.
ЖЕЛАЕМЫЙ РЕЗУЛЬТАТ: значения кода задания, содержащие 03 в конце (но подстановочные знаки могут использоваться только для строковых значений).
Комментарии:
1. Нам нравится, что вы здесь, с нами, и нам нужно увидеть пример вашего кода и объяснение проблемы, чтобы мы могли помочь вам его отладить.
2. Это
job_code
число или строка?3. Если у вас есть коды заданий, начинающиеся с ’03’, то они являются строками.
4. используйте
LIKE '03%'
, ссылка. sqlitetutorial.net/sqlite-like
Ответ №1:
Используйте like вместо = .
Select
job_code,
pay_type
FROM salary_range_by_job_classification
WHERE job_code like '03%';
Комментарии:
1. В вашем запросе по-прежнему отсутствуют кавычки для строкового литерала:
like '03%';
.2. Привет @Avantika Tyagi но fn ‘like’ может использоваться только для строкового типа данных и как 03 считается строкой?
3. Вы также можете использовать like с типом данных number
Ответ №2:
Вы имеете в виду это?
WITH
salary_range_by_job_classification(job_code,pay_type) AS (
SELECT 10100, 1
UNION ALL SELECT 10101, 6
UNION ALL SELECT 10102,12
UNION ALL SELECT 10103, 4
UNION ALL SELECT 10104, 1
UNION ALL SELECT 10105, 3
UNION ALL SELECT 10106, 6
UNION ALL SELECT 10201, 6
UNION ALL SELECT 10202,12
UNION ALL SELECT 10203, 4
UNION ALL SELECT 10204, 1
UNION ALL SELECT 10205, 3
UNION ALL SELECT 10206, 6
)
SELECT
job_code
, pay_type
FROM salary_range_by_job_classification
-- you want an integer that ends in 03. calculation, not string op.
-- That is an integer whose modulo 100 is 3
WHERE job_code % 100 = 3;
-- out job_code | pay_type
-- out ---------- ----------
-- out 10103 | 4
-- out 10203 | 4