2010-11-11 2 views
2

Можно ли объявить переменную с фиксированной длиной в PHP?Объявить переменную PHP с длиной, как мы это делаем в базе данных char (10)

Я не прошу об обрезке или при установке условия выполнить подстроку.

Можем ли мы объявить переменную так же, как базу данных char (10).

Причина, по которой я прошу сделать процесс экспорта, PHP экспортирует данные в БД.

В БД У меня есть поле размером 100, и я передаю поле длиной 25, используя PHP.

Когда я смотрю в БД, он показывает дополнительное пространство для этого поля.

ответ

3

Возможно, это проблема с вашей базой данных.

Тип данных CHAR всегда будет заполнять оставшиеся неиспользуемые символы при хранении данных. Если у вас есть CHAR (3) и пройдите 'hi', он сохранит его как 'hi '. Это справедливо для многих реляционных СУБД (MySQL, Postgres, SQLite и т. Д.).

Вот почему некоторые двигатели базы данных также имеют тип данных VARCHAR (который является переменным, как указано в названии). Этот элемент не заполняет содержимое пробелами, если хранящиеся данные не достаточно длинны.

В большинстве случаев вы ищете тип данных VARCHAR. CHAR в основном полезен при сохранении кодов и т. Д., Которые всегда имеют одинаковую длину (например: поле CHAR (3) для хранения таких кодов, как ADD, DEL, CHG, FIX и т. Д.).

+0

DB2 dont have varchar :( – zod

+1

[Да, это так.] (Http://publib.boulder.ibm.com/infocenter/db2luw/v8/index. jsp? topic =/com.ibm.db2.udb.doc/conn/c0006171.htm) – netcoder

+0

Спасибо за информацию. Я новичок в DB2 – zod

1

Нет, a string в PHP всегда имеет переменную длину. Вы можете обрезать строку, чтобы убедиться, что дополнительное пространство все еще передано вашей БД.

1

Nope. У PHP не предусмотрено ограничение размера строки.

Вы можете имитировать что-то в объекте, используя setter and getter variables, хотя, если ошибка превысит допустимую величину (или отрезает данные).

0

Нет, но я действительно не думаю, что у вас возникла проблема с php. Я думаю, вы должны проверить свою конфигурацию DB2, возможно, она автоматически завершает строки с пробелами ... Сколько пробелов добавлено? Добавляются ли они раньше? После?

+0

Его добавляют после. Я думаю, что это заполняет все пространство. Например, если я передаю 25, а размер равен 75 ..it заполняет пробел или пробел 75. – zod

+0

См. ответ netcoder, я думаю, у вас есть объяснение. – greg0ire

+0

да .. это объясняется, но db2 не имеет varcahar :) – zod

0

Как уже сказал: Нет

Я не понимаю, как это помогло бы в любом случае. Я не знаком с DB2, но похоже, что если у вас есть дополнительные пробелы, они либо входят в переменную (и, следовательно, ее нужно обрезать), либо DB2 делает пробел, чтобы значение имело 100 символов. Если ваш ввод длиной всего 25 символов, то если он заполняет пробел, он, похоже, все равно сделает это.

0

Если вы хотите сохранить строки переменной длины в DB2, то перейдите к VARCHAR, если вы всегда хотите иметь одинаковую длину для каждой строки в столбце, определите точную длину, используя CHAR (например, для почтовых кодов).

Подробная информация о символьных строк доступна здесь: http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.sql.ref.doc/doc/r0008470.html с хорошим резюме:

строка символов фиксированной длины (CHAR)

Все значения в строки столбца фиксированной длины имеют одинаковую длину, который определяется атрибутом длины столбца. Атрибут длины должен быть от 1 до 254 включительно.

переменной длины строки символов Есть два типа символьных строк переменной длины:

  • Значение VARCHAR может быть длиной до 32,672 байт.
  • Значение CLOB (символ большого объекта) может составлять до 2 гигабайт минус 1 байт (2 147 483 647 байт) в длину.

Конечно, потом становится все более подробно, в зависимости от того, какого рода кодирования вы используете, и т.д. ... (например, UTF-16 или UTF-32)

Смежные вопросы