在C/++ /#/ Java /所有内容中,我只需要my_str[desired_index]
即可。
但在SQL(至少甲骨文)我到目前为止发现的唯一方式:通过索引访问VARCHAR的最短途径
SUBSTR(my_str, desired_index, 1)
但它是如此尴尬,我不能相信在2011年我不得不这样做。
还有别的办法吗?
在C/++ /#/ Java /所有内容中,我只需要my_str[desired_index]
即可。
但在SQL(至少甲骨文)我到目前为止发现的唯一方式:通过索引访问VARCHAR的最短途径
SUBSTR(my_str, desired_index, 1)
但它是如此尴尬,我不能相信在2011年我不得不这样做。
还有别的办法吗?
这是在SQL中执行此操作的标准方法。一些DBMS具有支持备选符号的SQL方言;例如,Informix支持my_str[desired_index]
(并且,对于三个字符的子字符串,其中两个值都是偏移量,即my_str[12,14]
)。
问题是 - 为什么你需要在SQL中编写?
'你为什么需要在SQL中编写?' - 在检查约束中,我想验证一些位置 – 2011-05-17 09:33:25
Informix语法看起来很不错,尤其是子串 – 2011-05-17 09:35:47
@Alexander:如果你正在检查固定位置,你真的需要CHAR(n)而不是VARCHAR(n)吗?这也意味着你正在使用一个更复杂的数据类型作为[VAR] CHAR来实现......这并没有错,但它往往会使管理变得更加棘手。你确定你不需要一些单独的CHAR(1)字段吗? – 2011-05-17 09:45:39
我觉得如果你觉得这很尴尬,那你就错了。 – 2011-05-17 09:26:55
@阿什赫)或许吧。但是,真的,在C语法的任何层次上它都更好吗? – 2011-05-17 09:30:12
如果您经常使用'SUBSTR',插入数据时将字符提取到表中自己的字段会更好吗?然后你可以直接查询它,并避免所有这些尴尬;) – Tony 2011-05-17 09:34:28