Я ожидаю, что это присоединится, когда ApptIdList равен «12345», и не присоединится, когда ApptIDList будет «12345,67890»
SELECT *
FROM WAITINGROOM a
LEFT JOIN APPOINTMENTS b on b.ApptId = (CASE WHEN (a.ApptIdList LIKE '%,%') THEN -1 ELSE CONVERT(INT, a.ApptIdList) END)
Столбец WAITINGROOM.ApptIdList представляет собой список строк, разделенных запятыми, который соответствует ключу int APPOINTMENTS.ApptId
(Да, я знаю, что это плохой способ создания базы данных. Это не моя база данных, и я не могу ее изменить.)
Это похоже на мою копию базы данных, но в некоторых базах данных пользователя выдает ошибки типа
Преобразование не удалось при преобразовании значения varchar '236656,236655' в
тип данных int
Мне кажется, что на некоторых машинах '236656,236655' LIKE '%,%' ложно, что меня очень удивляет, и я не нашел способа воспроизвести это поведение на моей машине. Это вообще возможно? Или здесь происходит что-то еще более странное?
Я использую SQL Server 2008 R2. У пользователей есть различные версии, все 2008 R2 или выше.