GVKun编程网logo

如果参数为null,则SQL忽略WHERE的一部分(参数null为空)

4

在这里,我们将给大家分享关于如果参数为null,则SQL忽略WHERE的一部分的知识,让您更了解参数null为空的本质,同时也会涉及到如何更有效地ajax–AngularXhr发布对Asp.NetWe

在这里,我们将给大家分享关于如果参数为null,则SQL忽略WHERE的一部分的知识,让您更了解参数null为空的本质,同时也会涉及到如何更有效地ajax – Angular Xhr发布对Asp.Net Web API请求的结果参数为null、mysql – 当一列为NULL时带有条件的WHERE语句、MySQL-如果column为null,则从另一个表中检索值、MySQL左连接遇到where条件筛选B表字段为null时筛选不出来,也就是null丢失,的内容。

本文目录一览:

如果参数为null,则SQL忽略WHERE的一部分(参数null为空)

如果参数为null,则SQL忽略WHERE的一部分(参数null为空)

我有一个存储过程,可根据4个参数从表中获取信息。

我想基于参数获取值,但是如果参数为NULL,则不会检查该参数。因此,如果所有4个参数都为null,则将显示整个表。

这是我的SP(如您所见,这仅适用于1个参数atm):

CREATE PROCEDURE myProcedure
    @Param1 nvarchar(50),@Param2 nvarchar(50),@Param3 nvarchar(50),@Param4 nvarchar(50)
AS
BEGIN
    IF(@Param1 IS NULL)
        BEGIN
            SELECT Id,col1,col2,col3,col4 FROM myTable
        END
    ELSE
        BEGIN
            SELECT Id,col4 FROM myTable WHERE col1 LIKE @Param1+'%'
        END
END

有什么方法可以做到, 不必IF为每种可能的组合都加一个(15个IF)?

ajax – Angular Xhr发布对Asp.Net Web API请求的结果参数为null

ajax – Angular Xhr发布对Asp.Net Web API请求的结果参数为null

我已经创建了一个ASP.Net API控制器,我正在尝试使用Angular发出POST请求.请求到达我的控制器方法,但参数值为null.

我的角色代码:

$http({ method: 'POST',url: '/api/Contents',data: "value=foobar",headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }).
    success(function(data) {
                }).
    error(function(data,status,headers,config) {

    });

我也试过json(Json是我最想要的):

$http({ method: 'POST',data: { "foo": "bar","foo2": "bar2" },headers: { 'Content-Type': 'application/json'} }).
    success(function(data) {
                }).
    error(function(data,config) {

    });

我的(非常简单)Controller方法如下所示:

public void Post([FromBody]string value)
{
    //But Value is NULL!!!!!!
}

以下是我从Chrome中删除的请求标题中的一些值(我认为可能很有趣:

>请求方法:POST
>状态代码:204无内容
>接受:application / json,text / plain,/
>内容类型:application / x-www-form-urlencoded
> X-Requested-With:XMLHttpRequest
>表单Dataview sourceview URL编码
>价值:foobar
>服务器:Microsoft-IIS / 8.0
> X-AspNet-版本:4.0.30319

我错过了什么?

解决方法

像这样:

$http({ 
    method: 'POST',data: "=foobar",headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
}).success(function(data) {

}).error(function(data,config) {

});

注意= foobar数据参数.在这种情况下,您不应指定参数名称.是的,我知道,不要问.

你可以阅读更多关于how model binding in the Web API works.如果你像我一样,发现这绝对疯了,你可以考虑使用ServiceStack.

或者,您可以使用视图模型:

public class ContentsModel
{
    public string Value { get; set; }
}

然后让控制器操作将视图模型作为参数:

public void Post(ContentsModel model)
{
}

现在您可以发送正常的JSON请求:

$http({ 
    method: 'POST',data: JSON.stringify({ "value": "the value" }),headers: { 'Content-Type': 'application/json' } 
}).success(function(data) {

}).error(function(data,config) {

});

另请注意,如果要发送JSON,则需要使用JSON.stringify方法将javascript对象转换为JSON字符串.

mysql – 当一列为NULL时带有条件的WHERE语句

mysql – 当一列为NULL时带有条件的WHERE语句

让我说我有

ID       |   Column 1 | Column 2
  2      |      NULL  |     "a"
  3      |      "b"   |    NULL
  4      |       "c"  |     "c"

我想写的是:

 SELECT ID FROM table,AnotherTable 
  WHERE (Table.Column1 = AnotherTable.Column IF Table.Column1 IS NOT NULL 
     OR Table.Column2 = AnotherTable.Column IF Table.Column2 IS NOT NULL)

编辑:我也添加了案例IF Table.Column1 IS NOT NULL和Table.Column2 IS NOT NULL,然后选择Table.Column2 = AnotherTable.Column

最佳答案
您可以使用COALESCE()功能:

SELECT ID
FROM   table JOIN AnotherTable
               ON AnotherTable.Column = COALESCE(table.Column1,table.Column2)

MySQL-如果column为null,则从另一个表中检索值

MySQL-如果column为null,则从另一个表中检索值

假设我有一个表设置,其中包含一些值,包括名称,ID和引用另一个表的ID的外键。名称可以为空。当我从该表中选择所有记录时,如果名称不为null,我想获取名称。如果是这样,我想获取外键引用的记录的名称。我可以根据需要修改数据库结构,也可以简单地更改查询。我有什么选择?

MySQL左连接遇到where条件筛选B表字段为null时筛选不出来,也就是null丢失,

MySQL左连接遇到where条件筛选B表字段为null时筛选不出来,也就是null丢失,

背景为: A表为区域表,B表初始为空表, 需要用A表左连B表,;连接条件为A表的区域ID=B表的区域ID
左连之后全表查是没有问题的,如图:

image

但是加上B表的条件就会丢失null的数据,如图:

image

最后通过子查询解决问题

image

也试过网上说的连接条件用on..and 不行.

今天关于如果参数为null,则SQL忽略WHERE的一部分参数null为空的分享就到这里,希望大家有所收获,若想了解更多关于ajax – Angular Xhr发布对Asp.Net Web API请求的结果参数为null、mysql – 当一列为NULL时带有条件的WHERE语句、MySQL-如果column为null,则从另一个表中检索值、MySQL左连接遇到where条件筛选B表字段为null时筛选不出来,也就是null丢失,等相关知识,可以在本站进行查询。

本文标签: