SQL Где In не найти значения, которые я знаю, существуют

Я работаю в школьном округе, который использует Powerschool, и в Powerschool есть система пользовательских отчетов, которая позволяет пользователям напрямую вводить запросы SQL. Когда я использую пользовательский отчет:

SELECT T.DCID, T.LastFirst, T.teachernumber, T.Users_DCID
FROM TEACHERS T 
WHERE T.STATUS=1 and T.SCHOOLID=~(curschoolid)
ORDER BY T.LAST_NAME ASC, T.FIRST_NAME ASC

Я получаю заполненную таблицу следующим образом:

DCID    lastfirst   teachernumber   users_dcid

5433    -------------   216335  5433
7855    -------------   216430  7855
7576    -------------   216376  7576
26021   -------------   7365739166  9748

Но когда я изменяю свой запрос, чтобы добавить в выборку для определенных данных:

SELECT T.DCID, T.LastFirst, T.teachernumber, T.Users_DCID
FROM TEACHERS T 
WHERE T.teachernumber IN (216335, 216430, 7365739166) and T.STATUS=1 and T.SCHOOLID=~(curschoolid)
ORDER BY T.LAST_NAME ASC, T.FIRST_NAME ASC

Выход:

No data available in table

Я посмотрел документацию и t.teachernumber - это строка (20). Поэтому я попытался добавить CONVERT(string(20), 216335) в WHERE IN (), но это ничего не дало.

Что не так с моим запросом?

2 ответа

Вы хотите это:

WHERE T.teachernumber IN ('216335', '216430', '7365739166') -- etc

Строковые константы используют одинарные кавычки

SELECT T.DCID, T.LastFirst, T.teachernumber, T.Users_DCID FROM TEACHERS T 
       WHERE T.teachernumber IN ('216335', '216430', '7365739166') 
             AND T.STATUS=1 AND T.SCHOOLID=~(curschoolid)
ORDER BY T.LAST_NAME ASC, T.FIRST_NAME ASC
Другие вопросы по тегам