这个问题 围绕着我想知道的问题,但答案并没有完全解决它.
看起来通常使用通配符时'='比'喜欢'更快.这似乎是传统智慧.但是,假设我有一个包含有限数量的不同固定,硬编码,varchar标识符的列,并且我想选择与其中一个匹配的所有行:
select * from table where value like 'abc%'
Run Code Online (Sandbox Code Playgroud)
和
select * from table where value = 'abcdefghijklmn'
Run Code Online (Sandbox Code Playgroud)
'like'应该只需要测试前三个字符以找到匹配,而'='必须比较整个字符串.在这种情况下,在我看来,"喜欢"会有优势,所有其他条件都相同.
这是一个普遍的学术问题,所以无论哪个DB都无关紧要,但它使用的是SQL Server 2005.
这回答看起来像是同一个问题:
..对我不起作用.
我无法使用MS SQL Server 2005 CAST或CONVERT将HEX字符串转换为整数.我错过了一些微不足道的事情吗?我已经进行了广泛的搜索,我能找到的最好的是冗长的用户函数,从十六进制字符串值变为看起来像十进制int的东西.当然有一种简单的方法可以在使用内置函数的查询中直接执行此操作,而不是编写用户函数?
谢谢
编辑以包含示例:
选择CONVERT(INT,0x89)
按预期工作,但是
从sometable中选择CONVERT(INT,'0x'+ substring(msg,66,2))
得到我:
"将varchar值'0x89'转换为数据类型int时转换失败."
一个额外的显式CAST:
选择CONVERT(INT,CAST('0x89'AS VARBINARY))
执行,但返回813185081.
将'Int','Decimal'等替换为'Varbinary'会导致错误.通常,如果需要,看起来是数字的字符串将被解释为数字,但在这种情况下不会被解释为数字,并且似乎没有可识别HEX的CAST.我想有一些简单而明显的东西,我只是错过了它.
Microsoft SQL Server Management Studio Express 9.00.3042.00
Microsoft SQL Server 2005 - 9.00.3080.00(Intel X86)2009年9月6日01:43:32版权所有(c)1988-2005 Microsoft Corporation在Windows NT 5.1上具有高级服务的Express Edition(Build 2600:Service Pack 3)
总结一下:我想采用十六进制字符串作为表中的值,并将其作为十进制整数显示为查询结果的一部分,仅使用系统定义的函数,而不是UDF.
这个问题在MSChart论坛上一直没有得到回答超过一年.
我不断在图表上获得溢出异常.我正在设置我的图表如下:
Run Code Online (Sandbox Code Playgroud)InstrChart.Legends.Clear(); dataArea = InstrChart.ChartAreas.Add("Instr1"); dataArea.AxisX.MajorGrid.Enabled = false; dataArea.AxisY.MajorGrid.Enabled = false; dataArea.CursorX.IsUserSelectionEnabled = true;我正在添加12个系列,每个系列大约10000点.
当我向下缩放以显示每个系列只有3或4个点时会发生异常.在我释放鼠标按钮进行缩放后,我立即得到以下异常:
Run Code Online (Sandbox Code Playgroud)System.OverflowException was caught Message="Overflow error." Source="System.Drawing" StackTrace: at System.Drawing.Graphics.CheckErrorStatus(Int32 status)(等 - 请参阅上面的链接以获取完整的跟踪.)
我已经删除了图表的所有事件处理程序,没有运气停止从eventuall缩放导致此异常.我已经为图表设置了IsUserSelectionEnabled为false,并且在没有运气的情况下完成了代码缩放.
对这个问题的任何帮助都会很棒.干杯.
无论图表的其余部分是如何配置的,无论何时缩小"太远"(其含义可能会有所不同),任何时候都会出现此异常.有几个人报告了这个问题.异常助手表示它在System.Drawing.dll中.
这里有人有任何线索或解决方法吗?
在C#中,直接从Main()获取命令行参数省略了exe名称,这与C的传统相反.
通过Environment.GetCommandLineArgs获取相同的命令行参数包括它.
我是否因为这种明显的不一致而缺少一些合理的理由?
class Program
{
static void Main(string[] args)
{
Console.WriteLine(string.Format("args.Length = {0}", args.Length));
foreach(string arg in args)
{
Console.WriteLine(string.Format("args = {0}", arg));
}
Console.WriteLine("");
string[] Eargs = Environment.GetCommandLineArgs();
Console.WriteLine(string.Format("Eargs.Length = {0}", Eargs.Length));
foreach (string arg in Eargs)
{
Console.WriteLine(string.Format("Eargs = {0}", arg));
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
C:\\ConsoleApplication1\ConsoleApplication1\bin\Debug>consoleapplication1 xx zz aa
args.Length = 3
args = xx
args = zz
args = aa
Eargs.Length = 4
Eargs = consoleapplication1
Eargs = xx
Eargs = zz
Eargs = aa
Run Code Online (Sandbox Code Playgroud) 我想测试是否存在xml属性.鉴于这种:
XmlAttributeCollection PG_attrColl = SomeNodeorAnother.Attributes;
Run Code Online (Sandbox Code Playgroud)
第一次测试工作:
if (null != PG_attrColl["SomeAttribute"])
Run Code Online (Sandbox Code Playgroud)
"GetNamedItem"应该返回null,但是下面的测试会抛出一个异常,抱怨它返回的null.
if (null != PG_attrColl.GetNamedItem("SomeAttribute").Value;)
Run Code Online (Sandbox Code Playgroud)
为什么不同?只是好奇.
我有一个格式为 HH:mm - 24 小时制的时间选择器 (datetimepicker)。它显示为 00 到 24 和 00 到 59,并且不允许输入无效值。这正是我想要的。
但是,它使用 AM 和 PM 指标返回 12 小时的值。这意味着当用户输入“00”时返回“12”,“14”返回“2:00”。这不是我想要的。
我可以测试并转换这些不需要的返回值,但是肯定(?)有一种更优雅的方法可以说服这个东西给我我想要的值而不是检查这些特殊条件?我可能忽略了一些简单的属性?
c# ×3
.net ×2
command-line ×1
mschart ×1
null ×1
performance ×1
sql ×1
sql-server ×1
winforms ×1
xml ×1