我们可以在PHP中声明一个固定长度的变量吗?
我不是要求修剪或通过条件做子串。
我们可以像数据库char(10)一样声明变量。
我之所以要求我正在进行导出过程,PHP将数据导出到DB。
在DB中我有一个大小为100的字段,并且我使用PHP传递长度为25的字段。
当我查看数据库时,它会为该字段显示一些额外的空间。
答案 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)。
不同长度的字符串 有两种类型的变长字符串:
当然它会更详细,具体取决于您使用的编码类型等...(如UTF-16或UTF-32)