小编Tee*_*jay的帖子

Oracle CAST 到 NVARCHAR2 的奇怪行为

我有以下查询:

\n\n
SELECT (CAST("META_SECT_ORDER" AS NVARCHAR2(3)) || \'#\' || "CODE") AS "SECTION"\nFROM "BMAN_TP2"."LOADER_TEMPLATE_SECTIONS"\n
Run Code Online (Sandbox Code Playgroud)\n\n

META_SECT_ORDER显然是整数,而CODE是字符串。

\n\n

它输出 700 行,如下所示:

\n\n
SECTION\n-------\n 0#F01\n 0#I05\n 1#I05\n 2#I05\n
Run Code Online (Sandbox Code Playgroud)\n\n

ETC...

\n\n

我知道这CAST不是必需的,但查询是由底层查询构建器组成的,该构建器也为 MsSQL Server 输出(其中CAST需要时)和 Postgres 输出。

\n\n

奇怪的事实是,如果我提高NVARCHAR2我会得到不同的结果。例如:

\n\n
    \n
  • 当值 <= 80 时,我得到正确的结果(见上文)

  • \n
  • 值为 81,我得到 700 行\xec\xa5\xb4\xe1\x9e\x8b\xe9\x86\xb4\xe0\xb0\x80\xed\x89\xb6\xe0\xb5\x90\xe5\x87\xa8\xec\x93\xa5\xe6\x98\x81\xe8\x8f\x84\xe0\xa2\x8b\xe4\x96\xbc\xe8\xad\x95\xe8\xb2\x89\xe1\x82\x8b\xe4\x96\xbc\xe8\x8e\x80\xe9\x90\x8b

  • \n
  • 值为 82,我得到 700 行\xe0\xa8\x96\xe0\xac\x86

  • \n
  • 对于奇数值,在 [83-127] 中,我得到 700 个空行

  • \n
  • 对于偶数值,在 [84-128] 中,我得到 700 行\xda\xa2

  • \n
  • 值 >= 129,我得到 …

oracle oracle10g

5
推荐指数
1
解决办法
2万
查看次数

运行时从对象隐式转换

我们创建Id32Id64构造了包装来自DB的整数和长值,因此可以通过Json转换器(使用专用的自定义转换器)将它们显式处理为ID.

问题是我们从一个Dictionary<string, object>实际上是类似DataRow对象读取这些数据,其中string部分是列的名称,object部分是值.

所以我们使用此代码读取值之前:

int myVal = (int)row["COLUMN"]
Run Code Online (Sandbox Code Playgroud)

我们希望此代码在这些更改后也能继续工作.

但由于row["COLUMN"]object(@ compile-time)隐式转换失败,即使它实际上是Id32(@运行时).

以下显然有效:

int myVal = (Id32)row["COLUMN"]
Run Code Online (Sandbox Code Playgroud)

但有没有办法解决这个问题而不修改读取值的代码?

这是结构代码:

public struct Id32
{
    public readonly int Value;

    public Id32(int id) { this.Value = id; }

    public static implicit operator int(Id32 id) { return id.Value; }

    public static implicit operator Id32(int id) { return new Id32(id); }
}
Run Code Online (Sandbox Code Playgroud)

c# implicit-cast

5
推荐指数
1
解决办法
281
查看次数

Swift中未包装值的名称约定

当我在Swift中解包一个值时,我总是不确定如何命名包含它的变量:

override func touchesCancelled(touches: Set<UITouch>?, withEvent event: UIEvent?) {

    if let unwrappedTouches = touches
    {
        ....
    }

}
Run Code Online (Sandbox Code Playgroud)

是否有一些受欢迎的Swift-coders命名约定?

swift

5
推荐指数
1
解决办法
1137
查看次数

通过 AVMetaDataItem 写入 ID3 标签

我正在使用以下命令将 ID3 标签写入文件AVMetaDataItem

var soundFileMetadata = [AVMetadataItem]()

soundFileMetadata.append(createMetadata(AVMetadataiTunesMetadataKeyArtist, "MyArtist")!)
soundFileMetadata.append(createMetadata(AVMetadataiTunesMetadataKeySongName, "MySong")!)
soundFileMetadata.append(createMetadata(AVMetadataiTunesMetadataKeyAlbum, "MyAlbum")!)
soundFileMetadata.append(createMetadata(AVMetadataiTunesMetadataKeyUserGenre, "MyGenre")!)
soundFileMetadata.append(createMetadata(AVMetadataiTunesMetadataKeyComposer, "MyComposer")!)
Run Code Online (Sandbox Code Playgroud)

这是createMetadata方便的方法:

func createMetadata(tagKey: String, _ tagValue: AnyObject?,
                    keySpace:String = AVMetadataKeySpaceiTunes) -> AVMutableMetadataItem? {
    if let tagValue = tagValue {       
        let tag = AVMutableMetadataItem()
        tag.keySpace = keySpace
        tag.key = tagKey
        tag.value = (tagValue as? String) ?? (tagValue as? Int)
        return tag
    }
    return nil
}
Run Code Online (Sandbox Code Playgroud)

然后我尝试也写年份标签,但没有成功:

let comps = NSDateComponents()
comps.year = 2010;

let yearTag = AVMutableMetadataItem()
yearTag.keySpace = AVMetadataKeySpaceID3
yearTag.key …
Run Code Online (Sandbox Code Playgroud)

avaudiorecorder avassetexportsession avmetadataitem swift

5
推荐指数
1
解决办法
2265
查看次数

VB.net中的If()函数之谜

我有这个代码:

dstCell.CELL_VALUE_INT = If(srcCell.CELL_VALUE_FLOAT IsNot Nothing,
                            Math.Round(CDbl(srcCell.CELL_VALUE_FLOAT)),
                            Nothing)
Run Code Online (Sandbox Code Playgroud)

srcCell.CELL_VALUE_FLOAT为Nothing时,它会神秘地评估True部分!

有趣的是,正常的If语句正确评估为False部分:

If (srcCell.CELL_VALUE_FLOAT IsNot Nothing) Then
    dstCell.CELL_VALUE_INT = Math.Round(CDbl(srcCell.CELL_VALUE_FLOAT))
Else
    dstCell.CELL_VALUE_INT = Nothing
End If
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

感谢你!

编辑:CELL_VALUE_FLOAT是Nullable(Of Double),CELL_VALUE_INT是Nullable(整数)

在Quickwatch中,条件将correclty评估为False,但在运行时,If()函数的计算结果为True部分.

vb.net if-statement

4
推荐指数
2
解决办法
4661
查看次数

共享对象位置

我正在使用此方法将共享对象保存在特定位置,但我无法提供路径

SharedObject.getLocal("save","how to give path here for window");
Run Code Online (Sandbox Code Playgroud)

这给出了以下错误

Error: Error #2130: Unable to flush SharedObject.
at Error$/throwError()
at flash.net::SharedObject/flush()
at OnlineDiagramEditor/SaveData_mouseDownHandler()[C:\Users\ruchidod\Adobe Flash Builder 4.6\OnlineDiagramEditor\src\OnlineDiagramEditor.mxml:3240]
at OnlineDiagramEditor/__SaveData_mouseDown()[C:\Users\ruchidod\Adobe Flash Builder 4.6\OnlineDiagramEditor\src\OnlineDiagramEditor.mxml:3522]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.core::UIComponent/dispatchEvent()[E:\dev\4.y\frameworks\projects\framework\src\mx\core\UIComponent.as:13152]
at mx.managers::SystemManager/mouseEventHandler()[E:\dev\4.y\frameworks\projects\framework\src\mx\managers\SystemManager.as:2918]
Run Code Online (Sandbox Code Playgroud)

有时它给

Error: Error #2134: Cannot create SharedObject.
at flash.net::SharedObject$/getLocal()
at OnlineDiagramEditor/SaveData_mouseDownHandler()[C:\Users\ruchidod\Adobe Flash Builder 4.6\OnlineDiagramEditor\src\OnlineDiagramEditor.mxml:3236]
at OnlineDiagramEditor/__SaveData_mouseDown()[C:\Users\ruchidod\Adobe Flash Builder 4.6\OnlineDiagramEditor\src\OnlineDiagramEditor.mxml:3522]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.core::UIComponent/dispatchEvent()[E:\dev\4.y\frameworks\projects\framework\src\mx\core\UIComponent.as:13152]
at mx.managers::SystemManager/mouseEventHandler()[E:\dev\4.y\frameworks\projects\framework\src\mx\managers\SystemManager.as:2918]
Run Code Online (Sandbox Code Playgroud)

actionscript-3 shared-objects

4
推荐指数
1
解决办法
4815
查看次数

调用基类静态方法时获取Caller派生类

我想知道是否有可能(甚至通过反射等)在调用的基类静态方法中获取调用者的派生类。

例如,我有一个定义了静态方法的基类:

public MyBaseClass {
    public static void MyBaseClassStaticMethod() { /** ... **/ }
}
Run Code Online (Sandbox Code Playgroud)

和它的派生类:

public MyDerivedClass : MyBaseClass { }
Run Code Online (Sandbox Code Playgroud)

然后我打电话给:

MyDerivedClass.MyBaseClassStaticMethod()
Run Code Online (Sandbox Code Playgroud)

是否可以在方法内部MyBaseClassStaticMethod知道调用方的派生类型是什么?
(即MyDerivedClass

我只需要一个字符串...

c# reflection derived-class

4
推荐指数
2
解决办法
2208
查看次数

在处理订单时搜索CASE

我需要一些关于SQL中Searched CASE WHEN语句的处理顺序的信息.

例如:

(CASE
     WHEN Cells.Type <> 'UOM' THEN 0
     WHEN Template_Colors.Uom_Case = 'ONE' THEN 1
     WHEN Template_Colors.Uom_Case = 'MUL' THEN 2
 END) AS CELL_WHAT_UOM
Run Code Online (Sandbox Code Playgroud)

0除非,我总是需要结果Cells.Type <> 'UOM'.

我知道SQL解析器通常从底部到顶部,但在Oracle中,查询似乎正常工作,因此我认为WHEN子句按它们的顺序处理.

这是100%保证0情况下,先于其他处理?

或者我强制写道:

(CASE
     WHEN Cells.Type <> 'UOM' THEN 0
     WHEN Cells.Type = 'UOM' AND Template_Colors.Uom_Case = 'ONE' THEN 1
     WHEN Cells.Type = 'UOM' AND Template_Colors.Uom_Case = 'MUL' THEN 2
 END) AS CELL_WHAT_UOM
Run Code Online (Sandbox Code Playgroud)

...?

我需要有关Oracle 10g + SQL server 2008 …

sql case-when

2
推荐指数
1
解决办法
644
查看次数

Swift复合算术运算ERROR

var ret = -100.0 + (2.0 * 1.3) + (3.0 * 4.0) + (0.2 * 2.0 * 2.0) + 0.1 * 2.0 * 3.0
//output: Cannot invoke '+' with an argument list of type '($T24, $T31)'
Run Code Online (Sandbox Code Playgroud)

当我执行上述操作时,会发生错误,这很奇怪!对于快速计算来说,它是否过于复杂?

swift

2
推荐指数
1
解决办法
2226
查看次数

Postgres array_position(array, element) 有时是 0 索引?

Postgres 方法array_position(array, element)与 SQL 中的其他事物一样,是基于 1 的。例如:

SELECT array_position(array[4,5,6], 5)    -- returns 2
Run Code Online (Sandbox Code Playgroud)

但是,我正在执行以下查询来从 pg_catalog 检索非唯一索引及其列:

SELECT array_position(array[4,5,6], 5)    -- returns 2
Run Code Online (Sandbox Code Playgroud)

第四个选择indkey在数组中搜索列的ordinal_position,因此对于每一列,它都会获取其在索引中的位置。

有趣的是,第一列的位置为 0,所以我必须添加+ 1它以使其基于 1。

随后的CASE表达式使用完全相同的值作为检索 的第 n 个元素的索引indoption,奇怪的是,即使[]运算符也是基于 1 的,也能正常工作:

SELECT (array[4,5,6])[2]    -- returns 5
Run Code Online (Sandbox Code Playgroud)

这怎么样?

我目前使用的是 PG 9.6。

sql postgresql indexing ddl

1
推荐指数
1
解决办法
1259
查看次数

.net中的CRC32十六进制

我正在尝试找到一个CRC32计算算法,它以正8字符HEX输出数据(例如winrar CRC).

发现所有的algorythms返回一个正/负整数,我不知道如何处理...

c# vb.net crc32

0
推荐指数
1
解决办法
1640
查看次数

如何将字符串转换为整数

我有一个类型的数据库表字段string.该字段中的数据具有以下值:

二千〇一十四分之一

二千〇一十四分之二

现在我想增加这一领域的3/2014使用VB.NET.
请注意,1并且2不是一个月,它是序列号.

我怎样才能做到这一点?

.net vb.net string

-3
推荐指数
1
解决办法
63
查看次数