【问题标题】:SQL String comparison with < or >SQL 字符串与 < 或 > 的比较
【发布时间】:2014-01-24 02:43:19
【问题描述】:

我正在为数据库考试而学习,在我的一个练习中,我应该说明此数据库是否可以使用 INSERT [...]

CREATE TABLE A (
   a1 INTEGER NOT NULL PRIMARY KEY,
   a2 CHAR(10) NOT NULL,
   a3 CHAR(10) NOT NULL,
   CHECK(a2<a3)
)

最后一点是什么意思(a2&lt;a3)? 这是一个字符串,那么它比较什么,长度还是什么?一些帮助会很棒,谢谢。

【问题讨论】:

  • 我的猜测是这是一个约束,这意味着 a2 的值必须小于 a3 的值。尝试插入一条不满足该条件的记录。
  • 你用的是什么数据库?
  • 它是Lexicographical order,与在文本列上使用Order By 时使用的相同。例如,AA 出现在 AB 之前。

标签: sql string string-comparison


【解决方案1】:

insert into A values (0, 'a', 'b'); 有可能

insert into A values (1, 'b', 'a'); 抛出异常

CHECK(a2 &lt; a3) 只允许在 a2 的值在字母表中排在第一位(低于 a3)的位置插入。

你可以尝试执行select ascii('a');,这样你就可以看到字符的ASCII码(这里:97)。

编辑: 请注意,像 A 这样的大写字母与像 a 这样的小模式具有不同的 ascii 代码

Link to an ASCII-code table

【讨论】:

  • 这个答案很接近。大多数数据库都有一个称为 collat​​ion 的东西分配给字符串值。 collat​​ion 告诉数据库如何比较字符串值。默认排序规则通常是 ASCII 排序,但肯定还有其他选项。您应该查看您正在使用的数据库的文档以获取更多信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-05
  • 1970-01-01
  • 2011-12-24
  • 2015-06-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多