我想要一个改善我的SQL代码的好方法,我必须在满足条件时使用内连接.我目前正在复制代码:
@SystemMerge bit
if (@SystemMerge=1)
BEGIN
SELECT
.......
FROM myTable
INNER JOIN table ON table.param1=myTable.param1
INNER JOIN systemTable on systemTable.param2=myTable.param2
END
ELSE
BEGIN
SELECT
.......
FROM myTable
INNER JOIN table ON table.param1=myTable.param1
END
Run Code Online (Sandbox Code Playgroud)
我想以这样的方式做到这一点:
@SystemMerge bit
BEGIN
SELECT
.......
FROM myTable
INNER JOIN table ON table.param1=myTable.param1
***//the next 4 lines is not working, but this pseudo of what i want:***
if (@SystemMerge=1)
begin
INNER JOIN systemTable on systemTable.param2=myTable.param2
end
Run Code Online (Sandbox Code Playgroud)
编辑: 解决方案(感谢@Damien_The_Unbeliever):
LEFT JOIN systemTable ON systemTable.param2=myTable.param2
WHERE
((@SystemMerge=1 AND systemTable.param2 …Run Code Online (Sandbox Code Playgroud) 我试图通过使用short-if缩短我的代码:
int? myInt=myTextBox.Text == "" ? null :
Convert.ToInt32(myTextBox.Text);
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:无法确定条件表达式的类型,因为''和'int'之间没有隐式转换
以下作品:
int? myInt;
if (myTextBox.Text == "") //if no text in the box
myInt=null;
else
myInt=Convert.ToInt32(myTextBox.Text);
Run Code Online (Sandbox Code Playgroud)
如果我在整数中替换'null'(比如'4')它也有效:
int? myInt=myTextBox.Text == "" ? 4:
Convert.ToInt32(myTextBox.Text);
Run Code Online (Sandbox Code Playgroud) 我的问题是我想在同一个地方得到错误.
<td>
<asp:TextBox> ...</asp:TextBox>
<br />
<asp:RegularExpressionValidator
ErrorMessage=""please enter 9 digis only" ...>
</asp:RegularExpressionValidator>
<asp:RequiredFieldValidator
ErrorMessage="this can't be blank" ...>
</asp:RequiredFieldValidator>
</td>
Run Code Online (Sandbox Code Playgroud)
我附加了一个带有输出,外观和红色消息的图像,这是验证器.我希望错误消息将在同一个地方,因为只有一个错误可以打开.感谢帮助者(以及谁尝试).

我想在YII2框架的Gridview小部件中创建一个关闭的下拉列表值.我现在的代码:
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [ //only fields name!
['class' => 'yii\grid\SerialColumn'],
'id',
'title',
'statusId',
'categoryId',
['class' => 'yii\grid\ActionColumn'],
],
]); ?>
Run Code Online (Sandbox Code Playgroud)
和statudId应该是3个可能的值之一.(1开,2进,3关)
我的代码看起来像:
DateTime.ParseExact(d, "dd/MM/yy", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
当日期是"31/11/10"时例外:
System.FormatException: The DateTime represented by the string is not supported in calendar System.Globalization.GregorianCalendar.
Run Code Online (Sandbox Code Playgroud)
被扔了.
在"31/10/10"或"31/12/10"的情况下它工作正常,为什么会发生?
c# ×2
.net ×1
asp.net ×1
expression ×1
if-statement ×1
php ×1
sql ×1
sql-server ×1
validation ×1
yii2 ×1