1

当我使用 Java 和 JDBC 创建带有 SQL 的表时,我得到了不需要的空格。

CREATE TABLE Customers(name char(15), lname char(15), adress char(15)) 

当我在列中放入包含少于列允许的字符的内容时,会在输入中添加空格。

INSERT INTO Customers VALUES ('John', 'Doe', 'Somestreet')

'John''John '一个空格字符也是如此。当涉及到进一步的陈述时,这是一个大问题。据我所知,您可以使用LIKE,但我想防止出现'John-Paul'. 所以我想知道你是否可以帮助我解决这个问题。

我的 Java 代码将是这样的:

PreparedStatement prep = con.prepareStatement("UPDATE Customers SET lname=? WHERE name=?");
prep.setString(1, "Example");
prep.setString(2, "John"); // this doesn't work
prep.executeUpdate();
4

3 回答 3

1

Char 数据类型是固定长度的,所以如果你说 15,它总是15。如果你想要“可以修剪的字符串”,请使用 VarChar。您仍然可以将最大值设为 15,但实际长度将是插入字符串的长度。

于 2013-10-01T12:46:17.853 回答
1

这与 Java 无关:数据库类型char(length)用于指定固定长度的字符串,当存储在其中的数据具有的字符少于定义中指定的字符时,这些字符串在检索到所需长度时会用空格填充。

要解决此问题,请使用适用于可变长度字符串的数据类型,即 a varcharnvarchartext

CREATE TABLE Customers(
    name   nvarchar(15)
,   lname  nvarchar(15)
,   adress nvarchar(15)
) 
于 2013-10-01T12:46:47.260 回答
0

使用 varchar(15) 或 nvarchar(15) 代替 char,因为 char 数据类型是固定长度的。

于 2013-10-01T13:26:09.487 回答