几年前,我在一个数字主键存储在[SQL Server] varchar列中的系统上工作,所以当使用BETWEEN运算符查询时,我很快就解开了:
SELECT ID FROM MyTable WHERE ID BETWEEN 100 AND 110;
Run Code Online (Sandbox Code Playgroud)
结果:
100
102
103
109
110
11
Run Code Online (Sandbox Code Playgroud)
这简直就是糟糕的设计.但是,我正在研究第三方ERP系统,你可以想象它需要通用和灵活; 因此,我们有各种表格,其中提供字母数字字段,其中业务仅使用数字 - 因此可能发生类似的问题.
我猜这是一个很常见的问题; 我有一个简单的解决方案,但我很好奇其他人如何解决这些问题.
我的简单解决方案是:
SELECT ID FROM MyTable
WHERE ID BETWEEN iStartValue AND iEndValue
AND (LENGTH(ID) = LENGTH(iStartValue)
OR LENGTH(ID) = LENGTH(iEndValue));
Run Code Online (Sandbox Code Playgroud)
您可能会说,这是一个Oracle系统,但我通常在SQL Server中工作 - 因此可能更喜欢与数据库无关的解决方案.
编辑1:从头开始 - 我不明白为什么专业解决方案也不受欢迎.
编辑2:感谢所有回复.我不确定我是否感到失望,没有一个明显的,复杂的解决方案,但我相应很高兴看起来我没有错过任何明显的错误!
我想我还是更喜欢自己的解决方案; 它很简单而且有效 - 我有什么理由不使用它吗?我无法相信其他解决方案提供的效率要低得多.
我意识到在理想世界中,这个问题不会存在; 但不幸的是,我不是在一个理想的世界里工作,而且往往是一个充分利用糟糕情况的案例.
我有一个Perl脚本,它在顶部附近为它将使用的目录和文件设置变量.它还需要将一些变量设置为命令行参数.例:
use Getopt::Long;
my ($mount_point, $sub_dir, $database_name, $database_schema);
# Populate variables from the command line:
GetOptions(
'mount_point=s' => \$mount_point,
'sub_dir=s' => \$sub_dir,
'database_name=s' => \$database_name,
'database_schema=s' => \$database_schema
);
# ... validation of required arguments here
################################################################################
# Directory variables
################################################################################
my $input_directory = "/${mount_point}/${sub_dir}/input";
my $output_directory = "/${mount_point}/${sub_dir}/output";
my $log_directory = "/${mount_point}/${sub_dir}/log";
my $database_directory = "/db/${database_name}";
my $database_scripts = "${database_directory}/scripts";
################################################################################
# File variables
################################################################################
my $input_file = "${input_dir}/input_file.dat";
my $output_file = "${output_dir}/output_file.dat";
# ... etc
Run Code Online (Sandbox Code Playgroud)
这在我的开发,测试和生产环境中工作正常.但是,我试图更容易地覆盖某些变量(无需进入调试器)进行开发和测试.(例如,如果我想设置我的input_file ="/ tmp/my_input_file.dat").我的想法是使用GetOptions函数来处理这个,如下所示: …
我正在寻找一个正则表达式语句,让我从XHTML文档的body标签之间提取HTML内容.
我需要解析的XHTML将是非常简单的文件,例如,我不必担心JavaScript内容或<![CDATA[标签.
下面是我要解析的HTML文件的预期结构.由于我完全知道我将要使用的HTML文件的所有内容,因此这个HTML代码段几乎涵盖了我的整个用例.如果我能得到一个正则表达式来提取这个例子的主体,我会很高兴.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>
</title>
</head>
<body contenteditable="true">
<p>
Example paragraph content
</p>
<p>
</p>
<p>
<br />
</p>
<h1>Header 1</h1>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
从概念上讲,我一直在尝试构建一个匹配内部正文内容的所有正则表达式字符串.有了这个,我会使用C#Regex.Split()方法来获取正文内容.我以为这个正则表达式:
((.|\n)*<body (.)*>)|((</body>(*|\n)*)
Run Code Online (Sandbox Code Playgroud)
...会有所作为,但它似乎与我在RegexBuddy中的测试内容完全无关.
通常,在Netbeans中很容易看到未使用的变量,只是一条灰色的波浪线.
但是,如何在我的项目或单个类中找到所有这些未使用的变量?
原因:我正在调试一个有很多复制和粘贴的代码库,但是没有仔细完成.复制和粘贴后没有替换正确的变量有很多错误.
我想知道我可以做些什么来提高Excel自动化的性能,因为如果你在工作表中有很多事情,它可能会很慢......
这里有一些我发现自己:
ExcelApp.ScreenUpdating = false - 关闭重绘屏幕
ExcelApp.Calculation = Excel.XlCalculation.xlCalculationManual - 关闭计算引擎,以便Excel在单元格值更改时不会自动重新计算(在完成后将其重新打开)
减少对Worksheet.Cells.Item(row, col)和的调用Worksheet.Range- 我不得不轮询数百个单元格以找到我需要的单元格.实现一些单元格位置的缓存,将执行时间从大约40秒减少到大约5秒.
什么样的互操作会对性能造成严重影响,应该避免?你还能做些什么来避免不必要的处理?
假设以下定义:
/// <summary>
/// Replaces each occurrence of sPattern in sInput with sReplace. This is done
/// with the CLR:
/// new RegEx(sPattern, RegexOptions.Multiline).Replace(sInput, sReplace).
/// The result of the replacement is the return value.
/// </summary>
[SqlFunction(IsDeterministic = true)]
public static SqlString FRegexReplace(string sInput, string sPattern,
string sReplace)
{
return new Regex(sPattern, RegexOptions.Multiline).Replace(sInput, sReplace);
}
Run Code Online (Sandbox Code Playgroud)
在一个传递nvarchar(max)值sInput具有长度> 4000将导致被截断的值(即,在调用此UDF的结果是nvarchar(4000)相对于nvarchar(max).
我正在尝试将两个主菜单合并在一起,但是在使用子项获得正确结果时遇到了问题.我在我的MenuItems上使用GroupIndex属性来控制合并/插入.
Menu1(带有groupindices)是这样的
Menu2是这样的
而我正在做
Menu1.Merge(Menu2);
Run Code Online (Sandbox Code Playgroud)
我希望组合菜单在Edit菜单中有一个新的顶级菜单"Widgets"和一个新的"Clear"命令."小部件"工作正常,但编辑菜单丢失了剪切和粘贴,这不是我想要的.
如何停止剪切和粘贴命令消失?
我在扩展器面板内部有一个堆栈面板,我在程序中添加了复选框.目前,exanpander停在窗体的底部,但堆栈面板不断增长.我希望堆栈面板由扩展器限制并滚动以显示复选框.我是否需要在列表框中设置复选框才能获得滚动功能?
<Grid>
<Expander Header="Expander1" Margin="0,0,0,2" Name="Expander1" VerticalAlignment="Top" Background="Coral">
<StackPanel Name="StackScroll" Margin="0,0,0,2" Background="Aqua"></StackPanel>
</Expander>
</Grid>
Run Code Online (Sandbox Code Playgroud)
");
你有什么建议我的应用程序的脚本需求构建一个非常简约的Python(2.x)版本的建议.
我的主要动机是尽可能降低脚印(内存和磁盘方式),以便我的原生应用程序不会遭受任何重大性能损失.甚至考虑Python DLL大小也是因为可能会增加应用程序的启动时间.
我们可以像Lua或其他轻量级解决方案一样低吗?
有关准确的Web日志分析工具的任何建议,以生成IIS日志的报告?我们使用了WebTrends,但我觉得它不准确.