Найти значения, содержащие ’03’, в определенной таблице в SQL

#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