Java 如何区分普通空白字符和其他空白字符

Java 如何区分普通空白字符和其他空白字符,java,jdbc,relational-database,rdbms,Java,Jdbc,Relational Database,Rdbms,例如: 在MySQL中。数据类型Text, 如果我们在MySQL表中有一个定义为Text的列,那么当在JDBC中检索该列的值时,您会得到带有多余尾随空格的值,您可以调用String 35; trim(),,但如果该列打算接受空格字符(输入时按空格键)。那我该怎么办 MySQL文本仅为示例,请考虑其他数据库中的其他类似数据类型。 < P>我认为 String。Times()/代码>按照您的需要,删除前导和尾随空白。字符串中的空白将保留。这就是你要问的吗?String.trim()不会删除字符串中

例如: 在MySQL中。数据类型
Text
, 如果我们在MySQL表中有一个定义为
Text
的列,那么当在JDBC中检索该列的值时,您会得到带有多余尾随空格的值,您可以调用
String 35; trim(),
,但如果该列打算接受空格字符(输入时按空格键)。那我该怎么办


MySQL文本仅为示例,请考虑其他数据库中的其他类似数据类型。

< P>我认为 String。Times()/代码>按照您的需要,删除前导和尾随空白。字符串中的空白将保留。这就是你要问的吗?

String.trim()
不会删除字符串中的空格。

因此,你的问题应该是:“如何去掉RDBMS放在字段中的尾随空格?”

答案很简单:永远不要声明固定宽度的列,如CHAR(10)或NCHAR(10)。这些类型是在关系数据库的黑暗时代发明的,它们仍然存在的唯一原因是与遗留系统的向后兼容性

始终使用可变长宽列:VARCHAR、NVARCHAR、TEXT


现在,如果列的宽度可变,但字段包含尾随空格,这意味着您已经从某个具有固定宽度列的旧表转换了表。除了读取所有字段,对它们应用
String.Trim()
,然后将它们写回数据库之外,你什么也做不了。

oops..Francis Upton打败了我。不,如果用户输入'ABC',我想保留用户输入的尾随空格,但删除mysql填充的所有尾随空格。我认为您无法区分mysql添加的空格和用户输入的空格(我不确定mysql为什么会在VARCHAR中添加空格)。此外,如果MySQL填充的尾随空格与按空格键相同,那么这个问题没有答案。MySQL不会在VARCHAR中添加空格,而是文本。对不起,我的英语不好,让你很难理解我在说什么:D