小编Zoh*_*led的帖子

确定列值(SQL)中最后一个大写字母的索引?

简短版: 有没有办法根据该值中最后一个大写字母的索引(位置)轻松提取和ORDER BY数据库的子字符串,使用SQL?

长版本:我有一个带有用户名字段的表,用户名的约定是第一个名称的大写第一个首字母,后跟姓氏的大写第一个首字母,后跟姓氏的其余部分.因此,用户名字段排序是"错误的".通过用户名值的子字符串排序理论上可以工作,例如

SUBSTRING(username,2, LEN(username))

...除了在其他两个首字母之间有大写中间首字母的值.我很想知道,仅使用SQL(MS SQL Server),是否有一种相当简单/简单的方法:

  1. 测试DB值中字符的大小写(并返回一个布尔值)
  2. 确定字符串值中最后一个大写字符的索引

假设这甚至可以远程实现,我认为必须循环遍历每个用户名的各个字母来完成它,使其效率极低,但如果你有一个神奇的快捷方式,请随意分享.注意:这个问题纯粹是学术性的,因为我决定采用更简单的方法.如果这是可能的,我只是好奇.

sql-server string uppercase

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

更新表变量

我有一个表变量@searchResult

DECLARE @searchResult TABLE (
    [name_template] NVARCHAR(50),
    [record_id] INT,
    [record_name] NVARCHAR(50)
);
Run Code Online (Sandbox Code Playgroud)

和表[records]

CREATE TABLE [records] (
    [record_id] INT IDENTITY(1, 1) PRIMARY KEY,
    [record_name] NVARCHAR(50)
)
Run Code Online (Sandbox Code Playgroud)

@searchResult只包含[name_template]填充的记录。我想与最新的更新它[record_id],并[record_name][records]表匹配[name_template]

我试过以下 SQL 查询但没有成功:

UPDATE @searchResult
SET [record_id] = r.[record_id], [record_name] = r.[record_name]
FROM (
    SELECT TOP 1
          r.[record_id]
        , r.[record_name]
    FROM [records] AS r
    WHERE r.[record_name] LIKE [name_template]
    ORDER BY r.[record_id] DESC
) AS r;
Run Code Online (Sandbox Code Playgroud)

错误信息:

无效的列名“name_template”。

@searchResult …

sql sql-server sql-server-2008

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

如何使用户控件透明

我已将 userControl 从 vb6 迁移到 vb.net,但我对其透明度有疑问。在vb6中,属性backstyle用于使控件透明,但在vb.net中,我找不到它。这个属性有同等的吗?

vb.net user-controls transparency

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

如何跳过TSQL查询中具有NULL值的值?

我有这个相当复杂的查询:

SELECT distinct 
    v.KodQ, v.DodPeriodika, 
    v.GodGP, v.Periodika as Period, 
    k.Oblast, k.KratokNazivSI, 
    k.NazivSI, k.Periodika, 
    v.rKod, r.Naziv, 
    v.rDatum,
    v.IT, v.Primerok, v.BrojIE, 
    CONVERT(varchar, CONVERT(DATETIME, v.RefPeriodOd), 103) as RefPeriodOd,
    CONVERT(varchar, CONVERT(DATETIME, v.RefPeriodDo), 103) as RefPeriodDo


    FROM GP.dbo.MyTable1 AS v 

    INNER JOIN GP.dbo.MyTable2 as k 
    ON k.KodSI = v.KodQ AND k.DodObr = v.DodPeriodika

    INNER JOIN GP.dbo.MyTable3 AS r 
    ON r.rKod = v.rKod

    WHERE v.GodGP = GodGP and CHARINDEX('-', RefPeriodDo, 0) != 0
Run Code Online (Sandbox Code Playgroud)

我需要转换v.RefPeriodOdv.RefPeriodDo从这种格式'31 -癸2017'年以这种格式'31/12/2017'年.

是的我知道将DateTime保存为字符串(varchar)是个坏主意,但是应用程序现在正在使用中,所以我现在无法真正做QA并重构我的表.

我正在使用这个声明:

CONVERT(varchar, …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2008

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

根据多列生成ID

我拼命想在这里找到这个问题,但找不到与这个问题相关的任何内容.

在SQL(SMSS)中,我想要一个ID列.应根据同一表中的3列生成ID的值.

ID | column1 | column2 | column3
1  | 2016    | 101     | 1
2  | 2017    | 101     | 1
2  | 2017    | 101     | 1
3  | 2017    | 303     | 1
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我生成这个ID吗?

sql sql-server

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

如何使用数组聚合、Join 或 Union 成平面 Json 对象?

我的数据看起来像:

客户

CustomerId  CustomerName CustomerEmail  
------------------------------------------
1           Ben          Ben@gmail.com
2           Robert       Robert@gmail.com
3           Paul         Paul@gmail.com
Run Code Online (Sandbox Code Playgroud)

客户联系人

CustomerContactId  CustomerId  ContactName   ContactEmail
----------------------------------------------------------
99                 1           Lisa          Lisa@msn.com
98                 3           Jane          Jane@msn.com
97                 3           Wendy         Wendy@msn.com
Run Code Online (Sandbox Code Playgroud)

这是我正在寻找的结果:

[
    {
        "CustomerId": 1,
        "Names": [ "Ben","Lisa" ],
        "Emails": [ "Ben@gmail.com","Lisa@msn.com" ]
    },
    {
        "CustomerId": 2,
        "Names": [ "Robert" ],
        "Emails": [ "Robert@gmail.com" ]
    },
    {
        "CustomerId": 3,
        "Names": [ "Paul","Jane","Wendy" ],
        "Emails": [ "Paul@gmail.com","Jane@msn.com","Wendy@msn.com" ]
    }
]
Run Code Online (Sandbox Code Playgroud)

我尝试过的: 我很尴尬地说我还没有接近:

CustomerId  CustomerName CustomerEmail  
------------------------------------------ …
Run Code Online (Sandbox Code Playgroud)

sql t-sql azure-sql-server sql-server-2017 for-json

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

需要为Date逻辑编写查询

我有一个下面的查询,其中有一个日期过滤器EST_PICK_DATE between '2015-02-01' and '2015-06-01',其中逻辑EST_PICK_DATE应该是从当月和下个月的第一个日期起3个月.当前月份的IE EST_PICK_DATE应该在'2015-02-01'和之间'2015-06-01'.
我需要动态地写下面的查询.
在下面的查询我已硬编码值'2015-02-01''2015-06-01',但它应该动态地取得.
怎么做到这一点?我在SSIS包中使用此查询,那么我应该在SQL级别执行还是应该在包中实现此逻辑?如果是,怎么样?

INSERT INTO STG_Open_Orders (Div_Code, net_price, gross_price)
SELECT ord.DIV_CODE AS Div_Code, ord_l.NET_PRICE AS net_price, ord_l.gross_price AS gross_price, 
FROM ORD ord inner join ORD_L ord_l ONord.ORD_ID=ord_l.ORD_ID
WHERE ord_l.EST_PICK_DATE BETWEEN '2015-02-01' AND'2015-06-01'
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2008

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

DateTime Oveload

我想在我的标签示例中使用此输出:2016年4月20日,但我得到4/20/2016:1200:00:AM

我试图修改它,但无法解决这个错误

没有方法的重载需要1个参数导致此代码

lblDate.Text = rdr.GetValue(4).ToString("MMMM d,yyyy");
Run Code Online (Sandbox Code Playgroud)

这是整个代码.

 private void GetData()
    {
        SqlConnection con = new SqlConnection("Data Source = localhost\\SQLEXPRESS;Initial Catalog = MejOnlineManagementDB00;Integrated Security=True;");
        con.Open();
        SqlCommand cmd = new SqlCommand(@"SELECT orderProdName,orderProdType,orderQuantity,orderStatus,orderDateOrdered
                                        FROM orders2
                                        WHERE orderCustomer='"+DropDownList1.SelectedItem.Value.ToString()+"'",con);
        SqlDataReader rdr = cmd.ExecuteReader();
        if (rdr.HasRows)
        {
            while (rdr.Read())
            {
                lblProdName.Text = rdr.GetValue(0).ToString();
                lblProdType.Text = rdr.GetValue(1).ToString();
                lblQuantity.Text = rdr.GetValue(2).ToString();
                lblStatus.Text = rdr.GetValue(3).ToString();
                lblDate.Text = rdr.GetValue(4).ToString("MMMM d,yyyy");
            }
        }
        con.Close();
    }
Run Code Online (Sandbox Code Playgroud)

c# asp.net

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

从Table_Name中选择Colunm_Name Column_Name(无逗号)

所以我想知道为什么:

SELECT Colunm_Name Column_Name from Table_Name
Run Code Online (Sandbox Code Playgroud)

列名之间没有逗号不会返回语法错误,而是返回仅包含第一列的记录.起初我以为逗号是可选的,但后来我尝试了:

SELECT Colunm_Name Column_Name Column_Name from Table_Name
Run Code Online (Sandbox Code Playgroud)

这会在第三列附近返回语法错误.知道为什么吗?是否有理由为什么你可以放两个列名而不用逗号,即使它省略了第二列?日Thnx!

sql syntax

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

如何避免使用第三方Web服务重复代码 - 不使用动态?

我正在使用第三方Web服务,其中所有方法都具有以下签名:

SomeResponseClass SomeMethod(SomeRequestClass request)
Run Code Online (Sandbox Code Playgroud)

每个方法都有自己的请求类和它自己的响应类.然而,所有请求都有一些共同点,并且所有响应都有共同点.

每个请求类都有一些用于标识的属性:username并且token,每个响应类都有一些属性来指示是否存在错误:statuserror.

我正在寻找一种优雅的方法来创建一个实例化我的请求的方法 - 这样我就不必在调用服务的每个方法中重复自己.由于我无法更改类,并且没有所有类的通用接口或基类,我找到的唯一解决方案是使用dynamic:

private T CreateRequest<T>() where T : new()
{
    if(string.IsNullOrEmpty(_Token))
    {
        Login();
    }
    // this has to be dynamic for the next 2 rows to pass compilation.
    dynamic request = new T();
    request.username = _UserName;
    request.token = _Token;
    return (T)request;
}
Run Code Online (Sandbox Code Playgroud)

类似于从服务响应填充我自己的实体:

// response have to be dynamic for getting the error and status properties
private static T CreateServiceResponse<T>(dynamic response) where T …
Run Code Online (Sandbox Code Playgroud)

c# generics dynamic

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