Сравнение Crystal Reports не работает без обрезки - PullRequest
1 голос
/ 02 октября 2009

{AR_Customer.CustomerType} представляет собой поле из 4 символов

{AR_Customer.CustomerType} <> "S" не возвращает все записи, где это правда, если я не сделаю это так: подрезать ({AR_Customer.CustomerType}) <> "S"

в фактической базе данных я пропускаю поля NULL.

Так что это говорит мне, что NULL - это то же самое, что и "S" - я так не думаю, но именно так Crystal реагирует без трима ()

Есть ли здесь общее правило, которое мне нужно понять?

1 Ответ

0 голосов
/ 04 ноября 2017

Столбец базы данных может иметь «фиксированную ширину» из 4 символов, если это правда, тогда {AR_Customer.CustomerType}<>"S " будет альтернативой trim({AR_Customer.CustomerType})<>"S", который работает, потому что он удаляет пустое пространство поля.

NULL НЕ равно 'S' или любому значению вообще. На самом деле в SQL вы не можете использовать символ равенства для NULL, вместо этого вы должны использовать следующие специальные термины:

IS NULL
IS NOT NULL

В базе данных, с использованием SQL, запрос для получения всех строк с AR_Customer.CustomerType, равным "S", и значениями NULL также будет:

where (AR_Customer.CustomerType = 'S   ' or AR_Customer.CustomerType IS NULL)
...