像在数据库char(10)中那样声明一个带有length的PHP变量

时间:2010-11-11 18:11:17

标签: php db2

我们可以在PHP中声明一个固定长度的变量吗?

我不是要求修剪或通过条件做子串。

我们可以像数据库char(10)一样声明变量。

我之所以要求我正在进行导出过程,PHP将数据导出到DB。

在DB中我有一个大小为100的字段,并且我使用PHP传递长度为25的字段。

当我查看数据库时,它会为该字段显示一些额外的空间。

6 个答案:

答案 0 :(得分:3)

也许这是你的数据库问题。

在存储数据时,CHAR数据类型将始终填充剩余的未使用字符。如果您有CHAR(3)并通过'hi',则会将其存储为'hi '。对于许多关系数据库引擎(MySQL,Postgres,SQLite等)都是如此。

这就是为什么有些数据库引擎也有VARCHAR数据类型(这是变量,如名称所示)。如果存储的数据不够长,则不会使用空格填充内容。

在大多数情况下,您正在寻找VARCHAR数据类型。当您存储始终具有相同长度的代码等时,CHAR非常有用(例如:用于存储ADD,DEL,CHG,FIX等代码的CHAR(3)字段)。

答案 1 :(得分:1)

不,PHP中的string始终是可变长度的。您可以修剪字符串以查看是否仍有额外空间传递到您的数据库。

答案 2 :(得分:1)

不。 PHP没有规定限制字符串大小。

您可以使用setter and getter variables模拟对象中的某些内容,但如果传入的值大于允许值,则会抛出错误(或切断数据)。

答案 3 :(得分:0)

不,但我真的不认为你有php的问题。我认为您应该检查您的DB2配置,也许它会自动完成带空格的字符串...添加了多少空格?它们之前是否添加过?后?

答案 4 :(得分:0)

正如其他人所说:不。

我不明白它无论如何会有所帮助。我不熟悉DB2,但听起来如果你有额外的空格,它们要么进入变量(因此它应该被修剪),要么DB2做空格填充以使值有100个字符。如果您的输入只有25个字符,那么如果它正在进行空间填充,那么无论如何它似乎都会这样做。

答案 5 :(得分:0)

如果要在DB2中存储可变长度字符串,那么请使用VARCHAR,如果您始终希望列中每个字符串具有相同的长度,请使用CHAR定义确切的长度(例如,对于邮政编码)。

有关字符串的详细信息,请参见:http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.sql.ref.doc/doc/r0008470.html,其中包含一个很好的摘要:

定长字符串(CHAR)

固定长度字符串列中的所有值都具有相同的长度,该长度由列的长度属性确定。 length属性必须介于1和254之间(包括1和254)。

不同长度的字符串 有两种类型的变长字符串:

  • VARCHAR值最长可达32,672字节。
  • CLOB(字符大对象)值最长可达2千兆字节减去1字节(2,147,483,647字节)。

当然它会更详细,具体取决于您使用的编码类型等...(如UTF-16或UTF-32)