У меня есть пример таблицы с тремя полями.
TableA
FieldA FieldB FieldC
======================================
123XYZ456 XYZ John
124NNN333 NNN Jenny
232XPT124 XPT Jade
456XXX345 XXX James
FieldA
имеет фиксированную длину 9. Я не создавал эту таблицу, и некоторые приложения уже используют ее.
Я хочу выбрать FieldB
и FieldC
с условиями против FieldA
.
Используя этот оператор SQL:
SELECT FieldB,
FieldC
FROM TableA
WHERE FieldA LIKE Concat(@paramA, '%', @paramB)
Я не могу достичь желаемого результата.Когда я пытаюсь выполнить поиск с параметром paramA 12
и значением paramB ''
, я получаю результаты 2
:
FieldA FieldB FieldC
======================================
123XXX456 XXX John
124XXX333 XXX Jenny
, поскольку, очевидно, он совпадает с 12%
, а это не то, чтоЯ хочу.Я хочу, чтобы параметры соответствовали правильному индексу строки.
Если я ищу paramA = '12'
и paramB = ''
, то это не должно иметь никакого результата.Чтобы получить поля (FieldB
, FieldC
), мне нужны правильные значения paramA = '123'
и paramB = '456'
, поэтому он вернет XYZ
и John
.Если я хочу вернуть James
, тогда я должен дать paramA = '456'
и paramB = '345'
Как я могу правильно построить оператор SQL для этого?Любая идея?Спасибо.