【问题标题】:Whitespaces when i create tables with SQL使用 SQL 创建表时的空格
【发布时间】:2013-10-07 15:06:14
【问题描述】:

当我使用 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();

【问题讨论】:

  • 使用不同的列类型,例如TEXTVARCHAR
  • Sotirios 指出,这是 CHAR 和 VARCHAR 之间的区别之一......
  • 以上建议是正确的。如果由于某种原因无法更改表结构,则可以在查询中使用 RTRIM() 函数。
  • @SotiriosDelimanolis 谢谢你我根本没有考虑过列类型

标签: java sql whitespace removing-whitespace


【解决方案1】:

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

【讨论】:

  • 糟糕。而且我看到一些cmets在帖子中基本上说同样的瘦。
  • "而且我看到一些cmets在帖子里基本都说一样瘦"不用担心,这很常见。一些参与者更愿意提交简短的评论,而不是在完整的答案中详细说明这一点。
【解决方案2】:

这与 Java 无关:数据库类型 char(length) 用于指定固定长度的字符串,当存储在其中的数据具有的字符少于定义。

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-02
      • 1970-01-01
      • 2018-03-25
      • 2015-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多