Oracle数据库当前将长度为零的字符值视为null.但是,在将来的版本中,这可能不会继续存在,Oracle建议您不要将空字符串视为与空值相同.
考虑一个getVersion返回varchar2 的函数,该函数可能是'':
l_version := x.getVersion;
if l_version is null then
return 'V.1.0';
end if;
Run Code Online (Sandbox Code Playgroud)
这将在当前的Oracle 11g上正常工作,但是一旦未来的Oracle版本处理''不同,它可能会中断null.
我认为做上述未来证明的唯一方法是:
if l_version is null or l_version = '' then
有一种不那么繁琐的方式吗?
我在这里有一个简单的问题,我想知道oracle中NLS_NCHAR_CHARACTERSET和NLS_CHARACTERSET设置之间的区别?
根据我的理解,NLS_NCHAR_CHARACTERSET用于NVARCHAR数据类型,NLS_CHARACTERSET用于VARCHAR2数据类型.
我试图在我的开发服务器上测试这个,我对CHARACTERSET的当前设置如下: -
PARAMETER VALUE
------------------------------ ----------------------------------------
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET US7ASCII
Run Code Online (Sandbox Code Playgroud)
然后我将一些中文字符值插入数据库.我将字符插入名为data_的表中,并更新了ADDRESS和ADDRESS_2列,这些列是VARCHAR2列.根据我对NLS_CHARACTERSET US7ASCII的当前设置的理解,不应该支持中文字符,但它仍然显示在数据库中?NLS_NCHAR_CHARACTERSET优先于此?
谢谢.
我正在阅读2011年6月5.1版的最新ECMA-262参考资料.
在第8.6.2节表9中,我们关于[[Construct]]内部属性:
创建一个对象.通过new运算符调用.SpecOp的参数是传递给new运算符的参数.实现此内部方法的对象称为构造函数.
该标准并未说明构造函数必须是Function对象.那么我们可以有一个不是函数对象的构造函数对象吗?
是否可以保存当前状态(所有打开的窗口、选项卡、连接、文件等),关闭 SQL Developer,改天重新启动它并在您离开的地方继续工作?
我刚刚意识到使用Stream.reduce(...)实现以下算法来计算流的哈希码是不可能的.问题是哈希码的初始种子1不是累加器的标识.
List.hashCode()的算法 :
int hashCode = 1;
for (E e : list)
hashCode = 31*hashCode + (e==null ? 0 : e.hashCode());
Run Code Online (Sandbox Code Playgroud)
您可能会想到以下内容是正确的,但事实并非如此,尽管如果流处理没有拆分它会起作用.
List<Object> list = Arrays.asList(1,null, new Object(),4,5,6);
int hashCode = list.stream().map(Objects::hashCode).reduce(1, (a, b) -> 31 * a + b);
Run Code Online (Sandbox Code Playgroud)
看来,这样做的唯一明智的方法是得到Iterator的Stream和做正常的顺序处理或将其收集到List第一.
来自K&R 的The C Programming Language第123页:
(p ++) - > x在访问x后递增p.(最后一组括号是不必要的.为什么?)
为什么不考虑->绑定强于++?
编辑:对比给定的表达式++p->x,后者被评估为++(p->x)增量x,而不是p.所以在这种情况下,括号是必要的,(++p)->x如果我们想增加,我们必须写p.
Web服务器上的代码:
public byte[] loadData() {
byte[] data = null;
try(final InputStream resourceStream = getClass().getResourceAsStream("data.bin")) {
data = ByteStreams.toByteArray(resourceStream); //ByteStreams is from Guava library
} catch (IOException e) {
e.printStackTrace();
}
return data;
}
Run Code Online (Sandbox Code Playgroud)
几个线程在资源上打开流并读取其内容是否存在问题?在这种情况下,资源是jar中包含的数据文件.
在Windows上同时读取资源不是问题.但是这没有效率,所以我选择使用WeakReference和双重检查锁定来加载数据一次.
我正在运行ColdFusion Builder 3(Express版)以连接到本地运行的ColdFusion 9服务器(Windows机器).
当我在CF Builder上设置RDS配置并单击Test Connection时, 一切正常.
但是当我点击Test Debugger时,我收到以下错误:
无法初始化类coldfusion.log.CFLogs
这是CF Builder 3试图访问CF 9服务器的问题吗?
考虑以下代码:
#!/usr/bin/bash
t_export() {
declare dummy="Hello"
export dummy
echo dummy: $dummy
echo printenv dummy: $(printenv dummy)
}
t_export
echo dummy: $dummy
echo printenv dummy: $(printenv dummy)
Run Code Online (Sandbox Code Playgroud)
输出:
dummy: Hello
printenv dummy: Hello
dummy:
printenv dummy:
Run Code Online (Sandbox Code Playgroud)
你如何解释这一点?我认为环境始终是全局的,因此变量dummy在函数外部也是可见的。
java ×2
oracle ×2
varchar2 ×2
aix ×1
ascii ×1
bash ×1
c ×1
coldfusion ×1
coldfusion-9 ×1
hash ×1
hashcode ×1
java-stream ×1
javascript ×1
plsql ×1
shell ×1
tar ×1
utf ×1
varchar ×1