2011-05-17 42 views
0

在C/++ /#/ Java /所有内容中,我只需要my_str[desired_index]即可。
但在SQL(至少甲骨文)我到目前为止发现的唯一方式:通过索引访问VARCHAR的最短途径

SUBSTR(my_str, desired_index, 1) 

但它是如此尴尬,我不能相信在2011年我不得不这样做。

还有别的办法吗?

+2

我觉得如果你觉得这很尴尬,那你就错了。 – 2011-05-17 09:26:55

+0

@阿什赫)或许吧。但是,真的,在C语法的任何层次上它都更好吗? – 2011-05-17 09:30:12

+1

如果您经常使用'SUBSTR',插入数据时将字符提取到表中自己的字段会更好吗?然后你可以直接查询它,并避免所有这些尴尬;) – Tony 2011-05-17 09:34:28

回答

1

这是在SQL中执行此操作的标准方法。一些DBMS具有支持备选符号的SQL方言;例如,Informix支持my_str[desired_index](并且,对于三个字符的子字符串,其中两个值都是偏移量,即my_str[12,14])。

问题是 - 为什么你需要在SQL中编写?

+0

'你为什么需要在SQL中编写?' - 在检查约束中,我想验证一些位置 – 2011-05-17 09:33:25

+0

Informix语法看起来很不错,尤其是子串 – 2011-05-17 09:35:47

+2

@Alexander:如果你正在检查固定位置,你真的需要CHAR(n)而不是VARCHAR(n)吗?这也意味着你正在使用一个更复杂的数据类型作为[VAR] CHAR来实现......这并没有错,但它往往会使管理变得更加棘手。你确定你不需要一些单独的CHAR(1)字段吗? – 2011-05-17 09:45:39