Что PostgreSQL эквивалентен SQL Server NVARCHAR?

По-моему, определенный для типа код в универсальном классе является запахом кода. Я осуществил бы рефакторинг его для получения чего-то вроде этого:

public class MyClass<T>
{
 ...
}

public class IntClass : MyClass<int>
{
  public void IncrementMe()
  {
    this.value++;
  }
}
44
задан John Saunders 15 August 2009 в 14:23
поделиться

3 ответа

Бинарный оператор '|' - побитовый оператор ИЛИ; для каждого бита в двух входных словах, если любой бит равен 1, тогда соответствующий бит в результате будет равен 1:

0001 | 0010 = 0011

'|' Оператор обычно используется для установки отдельных битов в слове, например, в опубликованном вами фрагменте кода.

Бинарный оператор «&» является побитовым оператором «И»; для каждого бита в двух входных словах, если оба бита равны 1, тогда соответствующий бит в результате будет равен 1:

0101 & 0110 = 0100

Оператор '&' может использоваться для проверки, установлен ли бит. Например, чтобы проверить, установлен ли бит MSGINFO_ENABLE, вы d выполнить что-то вроде

if (VirtBoard.msginfo_mask & MSGINFO_ENABLE != 0)
{
  /* MSGINFO_ENABLE bit is set, do something interesting */
}

Выражение

VirtBoard.msginfo_mask & MSGINFO_ENABLE 

будет оцениваться как 1 (0x0001), если бит MSGINFO_ENABLE был установлен, и 0 в противном случае.

Унарный оператор '~' - это побитовый оператор НЕ; для каждого бита во входном слове соответствующий бит в результате устанавливается на противоположное значение:

~ 0001 = 1110

Вы можете использовать оператор '~' вместе с оператором '&', чтобы очистить отдельный бит. Например, если бы мы хотели очистить бит MSGINFO_ENABLE, мы бы сделали что-то вроде

VirtBoard.msginfo_mask = VirtBoard.msginfo_mask & ~MSGINFO_ENABLE;

, которое можно сократить до

VirtBoard.msginfo_mask &= ~MSGINFO_ENABLE;

. Отрицание MSGINFO_ ENABLE дает нам 1111111111111110 (при условии 16-разрядного целого числа без знака); так как все начальные биты равны 1, и если это противоречит маске VirtBoard.msginfo_, все биты, которые уже установлены, сохраняются; т.е. 0000000000001111 и 1111111111111110 = 0000000000001110. многобайтовый, если вы правильно установил PostgreSQL.
Сюда входят: ТЕКСТ (рекомендуется) VARCHAR CHAR

37
ответ дан 26 November 2019 в 22:14
поделиться

Это varchar и текст , предполагая, что ваша база данных находится в кодировке UNICODE. Если ваша база данных находится в кодировке, отличной от UNICODE, не существует специального типа данных, который дал бы вам строку Unicode - вы можете сохранить его как поток байтов, но это не будет строка.

14
ответ дан 26 November 2019 в 22:14
поделиться

Стандартный тип данных TEXT идеально подходит для этого.

7
ответ дан 26 November 2019 в 22:14
поделиться
Другие вопросы по тегам:

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