1

我正在尝试运行查询以从表中的列中选择值,该列中的数据在特定位置没有空间。即前两个位置。

Select test_col from A where SUBSTR(test_col, 0 ,2) <> ' '

到目前为止,它返回的列在开始的两个位置有空间。

任何建议。

例子:

test_col
  Quick Brown Fox
Black Sheep
  This a test
Mary had a little lamb

所以查询应该返回Black SheepMary had a little lamb

4

4 回答 4

4

您的索引应该从 1 而不是 0 开始,我更喜欢 Trim 并检查 null 而不是检查数据中的空间。尝试这个

Select test_col from A where Trim(SUBSTR(test_col, 1 ,2)) IS NOT NULL
于 2013-05-16T17:40:08.057 回答
1
select test_col 
  from A 
 where SUBSTR(test_col, 1, 1) <> ' '
   and SUBSTR(test_col, 2, 1) <> ' ';

或(甚至更好)

select test_col 
  from A 
 where INSTR(SUBSTR(test_col, 1, 2), ' ') = 0;
于 2013-05-16T17:39:19.180 回答
1

字符串的第一个位置索引是 1,而不是 0(尽管SUBSTR() 将其视为 1)并且您只测试一个空格:

select test_col from A where SUBSTR(test_col, 1, 2) <> '  '
于 2013-05-16T17:40:03.297 回答
1

Oracle 10g 及更高版本:

SELECT test_col FROM a WHERE REGEXP_LIKE(test_col, '^[^ ]{2}.*$'); 

这是SQL 小提琴

于 2013-05-16T17:48:42.327 回答