我在这里遇到了我无法理解的被感染的情况。我将要编写的有关功能的文档也没有任何东西可以说明这一点。
我有一张桌子和一个田野titulovarchar2(55)
。我在巴西,一些在这一领域中的字符有口音,我的目标是没有口音创建一个类似的字段(由原始字符代替,因为这谩
成为a
等等)。
我可以使用一堆函数像replace
,translate
和其他函数那样来做,但是我在互联网上发现一个接缝看起来更加优雅,然后我使用了它。那就是问题所在。
我的更新代码是这样的:
update myTable
set TITULO_URL = replace(
utl_raw.cast_to_varchar2(
nlssort(titulo, 'nls_sort=binary_ai')
)
,' ','_');
就像我说的,目标是将每个重音符号转换成与之等效的形式,而没有重音加上空格 _
然后我得到了这个错误:
ORA-12899: value too large for column
"mySchem"."myTable"."TITULO_URL" (actual: 56, maximum: 55)
首先,尽管我也许这些功能正在添加一些字符,但让我检查一下。我执行了一条select命令,使我一行titulo
包含55个字符。
select titulo from myTable where length(titulo) = 55
然后,我选择一行进行一些测试,我选择的行具有以下值:('FGHJT脫RYO DE YHJKS DA DGHQ脟脙A DE ASGA XCVBGLEASDE脭NASD'
我确实对其进行了更改以保留数据,但结果是相同的)
当我执行以下选择语句时,事情变得很奇怪:
select a, length(a), b, length(b)
from ( select 'FGHJT脫RYO DE YHJKS DA DGHQ脟脙A DE ASGA XCVBGL EASDE脭NASD' a,
replace(
utl_raw.cast_to_varchar2(
nlssort('FGHJT脫RYO DE YHJKS DA DGHQ脟脙A DE ASGA XCVBGL EASDE脭NASD', 'nls_sort=binary_ai')
)
,' ','_') b
from dual
)
此sql的结果是(为了更好的可视化,我将这些值一一递减):
a LENGTH(a)
FGHJT脫RYO DE YHJKS DA DGHQ脟脙A DE ASGA XCVBGL EASDE脭NASD 55
b LENGTH(b)
fghjtoryo_de_yhjks_da_dghqcaa_de_asga_xcvbgl_easdeonasd 56
比较上面两个字符串,大小没有区别:
FGHJT脫RYO DE YHJKS DA DGHQ脟脙A DE ASGA XCVBGL EASDE脭NASD
fghjtoryo_de_yhjks_da_dghqcaa_de_asga_xcvbgl_easdeonasd
我已经在Toad,PLSQL Developer和SQLPLUSW上测试了此查询,结果均相同。所以我的问题是, 这个LENGTH(b)= 56来自
哪里?我知道这可能与字符集有关,但我不知道为什么。我什至用trim
命令测试过,结果是一样的。
我做过的另一项测试
substr(b, 1,55)
结果是与上面相同的文本lenght(trim(b))
结果是56substr(b,56)
结果为空(无null,无空格,仅空)由@Sebas建议:
LENGTHB(b)
结果是56ASCII(substr(b,56))
那么,再说一次: 这个LENGTH(b)= 56来自 哪里?
,很长的帖子,并感谢那些来到这里的人(阅读所有内容)。对于那些仍然不阅读的人表示感谢:)
最好的祝福
我有以下代码来解析一个JSON文件: 要处理以下JSON文件: 如果我执行此代码,我将收到以下错误: 所以我开始一步一步地调试应用程序,看看part processing()中的哪个代码部分抛出了这个异常。令人惊讶的是,那里的所有代码都正常执行:没有抛出异常,也没有返回结果I except。 更让我惊讶的是,当我稍微改变第一种方法的代码时,它可以在不产生异常的情况下工作。 我不知道println方
问题内容: 我在GregorianCalendar类中遇到一个奇怪的行为,我想知道我是否真的做得不好。 仅当初始化日期的月份的实际Maximum大于我将日历设置为的月份时,才追加此值。 这是示例代码: 我知道问题是由于日历初始化日期是31天(可能是5月),与设置为2月(28天)的月份混淆了。修复很容易(只需在设置年和月之前将day_of_month设置为1),但是我想知道这确实是想要的行为。有什么
问题内容: 我正在为一个问题而苦苦挣扎,我不明白为什么它不起作用。如何通过将变量传递并转换为? 为什么在顶部代码段中不起作用,但在行下方的底部代码段中起作用? 唯一的区别似乎是添加了一个额外的变量,该变量也被键入为? 问题答案: 该是一种原始类型,同时是一个普通的Java类。您不能在原始类型上调用方法。但是该方法在上可用,如javadoc中所示 有关这些原始类型的更多信息,请参见此处
问题内容: 为什么的到哪里去了? 问题答案: 删除任何字符,并从字符串的开头和结尾。
问题内容: 我认为这是一个正常程序,但这是我得到的输出: 有人可以向我解释一下吗? 问题答案: 这是有据可查的PHP行为,请参阅php.net的foreach页面上的警告。 警告 即使在 foreach 循环之后,仍保留 $ value的 引用和最后一个数组元素。建议通过unset()销毁它。 __ 编辑 尝试逐步了解此处实际发生的情况
问题内容: 我有上面的代码,但我不知道为什么会产生 而不是 非常感谢 问题答案: 使用量词来匹配1个或多个空格,而不是:- 表示匹配0个或多个空格,并且将在每个字符之前匹配一个空字符,并由一个空格代替。