Поля CONCAT'ing NULL

// Вы можете использовать это ...

Шаг 1. Первый шаг - убедиться, что вы заявили о поддержке протокола UITextViewDelegate. Это делается в вашем заголовочном файле, в качестве примера можно привести заголовок

EditorController.h:

@interface EditorController : UIViewController  {
  UITextView *messageTextView;
}

@property (nonatomic, retain) UITextView *messageTextView;

@end

Шаг 2. Далее вам необходимо зарегистрировать контроллер в качестве делегата UITextView. Продолжая из приведенного выше примера, вот как я инициализировал UITextView с EditorController в качестве делегата…

- (id) init {
    if (self = [super init]) {
        // define the area and location for the UITextView
        CGRect tfFrame = CGRectMake(10, 10, 300, 100);
        messageTextView = [[UITextView alloc] initWithFrame:tfFrame];
        // make sure that it is editable
        messageTextView.editable = YES;

        // add the controller as the delegate
        messageTextView.delegate = self;
    }

Шаг 3. И теперь последний кусок головоломки - принять меры в ответ на сообщение shouldCahngeTextInRange следующим образом:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range 
  replacementText:(NSString *)text
{
    // Any new character added is passed in as the "text" parameter
    if ([text isEqualToString:@"\n"]) {
        // Be sure to test for equality using the "isEqualToString" message
        [textView resignFirstResponder];

        // Return FALSE so that the final '\n' character doesn't get added
        return FALSE;
    }
    // For any other character return TRUE so that the text gets added to the view
    return TRUE;
}
59
задан jkmartindale 10 July 2019 в 01:59
поделиться

5 ответов

Попытка

ISNULL(FirstName, '<BlankValue>') -- In SQL Server
IFNULL(Firstname, '<BlankValue>') -- In MySQL

Итак,

CONCAT(ISNULL(FirstName,''),ISNULL(LastName,''),ISNULL(Email,'')) -- In SQL Server
CONCAT(IFNULL(FirstName,''),IFNULL(LastName,''),IFNULL(Email,'')) -- In MySQL

вернет то же самое без проблемы с нулем (и пустой строки, где должны быть нули).

119
ответ дан 24 November 2019 в 18:00
поделиться
SELECT ISNULL(FirstName,'')+ISNULL(LastName,'')+ISNULL(Email,'') as Vitals FROM MEMBERS

рекомендуется, но если вы действительно подключились к CONCAT, оберните его в {fn}, и вы можете использовать функцию ODBC, например:

SELECT {fn CONCAT(ISNULL(FirstName,''), ISNULL(LastName,''), ISNULL(Email,''))} as Vitals FROM MEMBERS

Если вам нужен первый <пробел> последний, но просто last, когда first имеет значение null, вы можете сделать следующее:

ISNULL(FirstName+' ','') + ISNULL(LastName,'')

Я добавил пробел к имени, которое может иметь значение null - это будет означать, что пробел будет существовать только в том случае, если FirstName имеет значение.

Чтобы соединить их все вместе с пробелом. между каждым:

RTRIM(ISNULL(Firstname+' ','') + ISNULL(LastName+' ','') + ISNULL(Email,''))
6
ответ дан 24 November 2019 в 18:00
поделиться

Вы всегда можете использовать параметр CONCAT_NULL_YIELDS_NULL ..

просто запустите SET CONCAT_NULL_YIELDS_NULL OFF , а затем все нулевые конкатенации приведет к тексту, а не к нулю ..

5
ответ дан 24 November 2019 в 18:00
поделиться

Ответ Стефана правильный. Чтобы исследовать немного глубже, вам нужно знать, что NULL - это не то же самое, что Nothing. Null представляет собой отсутствие значения или, другими словами, не определено. Ничто не представляет собой пустую строку, которая на самом деле является значением.

Undefined + something = undefined

Хороший лакомый кусок базы данных, за который нужно держаться!

3
ответ дан 24 November 2019 в 18:00
поделиться

SQL Server не имеет функции CONCAT .
(Обновление: начиная с MS SQL Server 2012 была введена функция CONCAT )

В поведении SQL Server по умолчанию значения NULL передаются через выражение.

В SQL Server можно было бы написать:

SELECT FirstName + LastName + Email as Vitals FROM MEMBERS

] Если вам нужно обработать NULL s:

SELECT ISNULL(FirstName, '') + ISNULL(LastName, '') + ISNULL(Email, '') as Vitals FROM MEMBERS
2
ответ дан 24 November 2019 в 18:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: