在sql表fubar查询中做空格?

时间:2009-10-14 02:48:43

标签: sql sql-server tsql

我遇到了一个问题,我正在制作数独游戏,拼图的解决方案以这种格式存储: xxxxxxxxx xxxxxxxxx xxxxxxxxx xxxxxxxxx xxxxxxxxx xxxxxxxxx xxxxxxxxx xxxxxxxxx xxxxxxxxx

9组之间有8个空格,我似乎无法查询该行,它返回一个空白行..

这是因为有空格吗?如果我选择“xxxxxxxxx%”之类的解决方案 然后该行正确返回..

我是否只生成了50,000行:(如果是这样,我该如何解决这个间距问题?

这里编辑的是查询:

select * from sudoktion_puzzles 
where
p_solution='582917643 467283195 391546278 159362784 
674851329 823794561 216438957 938675412 745129836'    

4 个答案:

答案 0 :(得分:4)

在您引用的查询中,在倒数第二个术语之前有两个空格(以“9”开头的空格)。如果这是您的实际查询代码而不是表中的实际值,则可以解释您的问题。

答案 1 :(得分:1)

关于SQL Server(ANSI兼容)中你真正需要记住的空格的唯一特点是尾随空格不会被考虑到LEN()或相等比较中。

您的数据类型是否有任何特殊之处?

它们是否足以容纳整个字符串(至少89个字符)?

如果你想摆脱空格,你可以简单地删除空格:

UPDATE sudoktion_puzzles
SET p_solution = REPLACE(p_solution, ' ', '')

答案 2 :(得分:1)

仔细检查在之前或之后的任何地方没有第二个空格。

运行

SELECT * FROM sudoktion_puzzles
 WHERE LEN(p_solution) <> 89

并查看是否返回了您无法获得的行。如果是这样,那么你有额外的空间。

答案 3 :(得分:1)

嘿伙计们这些空间实际上是换行符/输入字符这个修复了它:

UPDATE sudoktion_puzzles
SET p_board = REPLACE(REPLACE(REPLACE(p_board, CHAR(10), ''), CHAR(13), ''), CHAR(9), '')