小编And*_*y M的帖子

SQL Server 在子字符串中使用条件

我有一个数据字段,其中包含这样的帐号

16530907-00
16530907-0001

16589553-00
16589553-00
Run Code Online (Sandbox Code Playgroud)

我想选择连字符右侧的所有内容,然后如果该子字符串的长度 >2,我想更新该字段并将其设置为自身减去右侧的两个额外数字。

我正在练习 select 语句

Select SUBSTRING(Account, CHARINDEX('-'), Account)+1, LEN(Account) as test
FROM Documents
WHERE SubmissionID=45925 and LEN(test)>2
Run Code Online (Sandbox Code Playgroud)

这是行不通的。我真正想做的是创建一个更新语句,测试连字符右侧的字符是否超过 2 个字符,然后截断任何多余的字符。

任何建议,将不胜感激。谢谢

sql sql-server substring sql-update

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

在3个表中选择count(*)和"join"

我正在寻找3个表的连接中的计数查询,这可以让我计算其中一个表的不同值.

我有3个表,我需要加入以获得预期的数据(Workflow,MessageMessage_Workflow_Relation).

我想获得按Message结果(related_name)中状态+连接表的一个字段分组的工作流计数.相关名称应取自adapter字段等于的条目wf,但有时会有多个与此条件匹配的消息记录,这将导致我的计数中的数据集更多,然后是真正存在的数据集.

我很确定必须能够理清它,但是不要让它运转起来.遗憾的是,我无法更改表结构,因为它是我们使用的产品的给定模式.

我的表结构如下所示:

工作流程:

id | workflow_id | starttime | endtime | status
------------------------------------------------------
1  |          22 |         0 |     200 |     OK
2  |          23 |       220 |     920 |  ERROR
3  |          55 |       202 |     588 |     OK
Run Code Online (Sandbox Code Playgroud)

Message_Workflow_Relation:

id | message_id | workflow_id |
-------------------------------
1  |        122 |          22 |
2  |        235 |          22 |
3  |        456 …
Run Code Online (Sandbox Code Playgroud)

sql select join count

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

在SQL中执行pivot-table-ish JOIN

我的雇主有一个批处理计算集群,用于处理用户提交的作业.每个批处理作业包括三个步骤:

  1. 工作开始了
  2. 工作完成了
  3. 结果报告给用户

批处理作业管理软件在每个步骤发生时记录,日志文件由一个元组组成,该元组具有提交作业的员工的ID代码,发生的步骤以及发生时间的时间戳.在CSV中,它看起来像:

ID  step    timestamp
--  ------  ---------
A   start   3533
B   start   3538
B   finish  3549
C   start   3551
A   finish  3557
B   report  3559
C   finish  3602
A   report  3603
B   start   3611
C   report  3623
B   finish  3643
B   report  3657
Run Code Online (Sandbox Code Playgroud)

等等.

数据集的另一个特点是员工之间存在共识,但员工之间并不相同; 也就是说,每个员工必须等到他们当前的工作在下一个工作开始前报告.因此,当我按日期排序并将结果限制为单个员工时,记录总是以"开始","完成","报告"的顺序出现.

我想创建一个数据透视表,将每个作业分组到一行.所以上面的数据变成:

employee-ID  started  finished  reported
-----------  -------  --------  --------
A            3533     3557      3603
B            3538     3549      3559
B            3611     3643      3657
C            3551     3602      3623
Run Code Online (Sandbox Code Playgroud)

那么,对于SQL:

SELECT
    log.ID AS employee-ID, …
Run Code Online (Sandbox Code Playgroud)

sql join subquery left-join

5
推荐指数
1
解决办法
1499
查看次数

Topendialog不显示文件扩展名

此问题仅发生在先前在Delphi 7下设计并迁移到在WinXP上运行的Delphi 2007的应用程序上.

我试了好几年才把这个问题整理好,没有运气.

据我所知,Topendialog是一个Win32对话框包装器,它应该继承windows文件夹选项,在我的例子中,它设置为显示所有文件的文件扩展名.

现在,如果我创建一个新的应用程序并在其上放置一个Topendialog,当它运行时,它会按预期显示文件扩展名.

如果我将相同的对话框拖放到现有应用程序并运行,它不会显示文件扩展名.

如果我在调用对话框之前在filename属性中将文件名字符串写入'Myfile.txt',则当显示对话框时,文件名显示为"Myfile",扩展名不会显示,也不会显示任何文件列表.

有没有其他人看起来这种行为?

有人有任何变通方法吗?

编辑:图像上传到新项目和现有项目之间的Topendialog之间的差异.

如新项目所示

如现有项目所示

delphi delphi-2007

5
推荐指数
1
解决办法
337
查看次数

主表与数百vs较小

我想知道哪种方法更适合设计数据库?

我目前有一个大表(每行97列),我可以参考查找表.

将某些列分组到较小的表中并将它们添加到用于引用整行的键列不是更好吗?

database sql-server performance database-design

5
推荐指数
1
解决办法
391
查看次数

如何在android中隐藏ListViewAdapter的默认键盘

我正在使用ListViewAdapter在我的主页上绑定ListView和一个自定义键盘.但是当我点击EditText时,会显示默认键盘.

我试图使用以下代码隐藏它:

InputMethodManager mgr = (InputMethodManager)activity.getSystemService(Context.INPUT_METHOD_SERVICE);
                    mgr.hideSoftInputFromWindow(diesel.getWindowToken(), 0);

activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Run Code Online (Sandbox Code Playgroud)

但它没有用.

如何从ListViewAdapter隐藏默认键盘?

android listview hide android-softkeyboard android-edittext

5
推荐指数
2
解决办法
2431
查看次数

MySQL 中的 GROUP_CONCAT - 如何包含不同的值?

我有两张用 UNION ALL 查询的表 - 一张用于 Android,一张用于 iPhone。每个表都有自己的设备字段(“android”或“iphone”)。

我使用GROUP_CONCAT(DISTINCT `device` ORDER BY `device` SEPARATOR ', ') AS `device`了几次,每次当我按另一列(例如日期、用户 ID 等)分组时。我也使用相同的 GROUP_CONCAT 来计算总数。

问题是,当我按日期分组时,我选择设备的 GROUP_CONCAT(不是直接设备),因为有些日期同时购买了 Android 和 iPhone。选择还包括 WHERE 或 HAVING 以让用户按特定日期、加入日期的用户数量等进行过滤。当我计算总数时,我在设备上有 GROUP_CONCAT,它本身就是一个 GROUP_CONCAT 函数。结果可能类似于“android, android, iphone, iphone”,因为有只有 Android 的日期、只有 iPhone 的日期和两者都有的日期(其他查询只能有这些选项中的一个或一些)。我正在寻找一种方法将此结果转换为“android, iphone”。

目前我正在使用一个 PHP 函数:

    private function get_device_human_string($fp_device_computer_string)
    {
        $devices= array(
            'android' => 'Android',
            'iphone' => 'iPhone'
        );
        $device_computer_string= strtolower($fp_device_computer_string);
        $ret= array();
        foreach ($devices as $device_key => $device_human_string)
        {
            if (strpos($device_computer_string, $device_key) !== false)
            {
                $ret[]= $device_human_string;
            } …
Run Code Online (Sandbox Code Playgroud)

mysql sql distinct group-concat

5
推荐指数
1
解决办法
2119
查看次数

知道下一个字符后,替换值中的文本

我正在尝试替换我的一个SQL列中的文本.通过找到/*REPLACE*/下一个字符为数字值的所有引用,可以很容易地找到要替换的文本,该值必须加满5000.

下面显示原始值的示例.

var checkIn = moment(FIELD(/*REPLACE*/4,/*REPLACE*/9).GET());  
var checkOut = moment(FIELD(/*REPLACE*/4,/*REPLACE*/10).GET());    
if (checkIn > checkOut) {      
    FIELD(/*REPLACE*/4,/*REPLACE*/10).SET(checkIn.format("DD MMM YYYY"));      
    checkOut = moment(FIELD(/*REPLACE*/4,/*REPLACE*/10).GET());  
}    
FIELD(/*REPLACE*/4,/*REPLACE*/11).SET(parseFloat(checkOut.diff(checkIn, "days")).toFixed(2));
Run Code Online (Sandbox Code Playgroud)

我需要查找所有引用/*REPLACE*/并增加以下字符,数字为5000.

下面显示了新值的示例.

var checkIn = moment(FIELD(5004,5009).GET());  
var checkOut = moment(FIELD(5004,5010).GET());    
if (checkIn > checkOut) {      
FIELD(5004,5010).SET(checkIn.format("DD MMM YYYY"));      
checkOut = moment(FIELD(5004,5010).GET());  
}    
FIELD(5004,5011).SET(parseFloat(checkOut.diff(checkIn, "days")).toFixed(2));
Run Code Online (Sandbox Code Playgroud)

我已经开始使用基本但是在文本之后找到了数字字符而迷失了方向.

SELECT column.REPLACE(column, '/*REPLACE*/',
Run Code Online (Sandbox Code Playgroud)

有什么帮助吗?

sql sql-server sql-server-2008

5
推荐指数
1
解决办法
167
查看次数

SQL Server找不到我的功能

我将SQL Server 2008与Borland Delphi结合使用来开发我的应用程序。从最近开始,我收到了一个非常奇怪的错误。我已经创建了几个在应用程序中使用的标量函数,但是我遇到了一个客户的问题,在他的公司中,当我调用标量函数时,我的软件返回以下错误:

找不到列“ dbo”或用户定义的函数或聚合“ dbo.FunctionName”,或者名称不明确。”

即使在这里,我也已经搜索了很多东西,因此请记住:

  1. 该功能存在;
  2. 我正在查询正确的数据库;
  3. 没有错别字;
  4. 所有者模式为dbo;
  5. 我的所有功能都会出现此问题;

    还有最奇怪的

  6. 仅当我从应用程序中调用它们时,如果我使用相同的用户在查询分析器上运行完全相同的代码,它就会很好地运行。

我在其他几个客户中都具有相同的功能,他们没有任何问题。可能是SQL Server问题吗?

附言:对不起,我的英语不好,这是第一个问题。

sql-server sql-server-2008

5
推荐指数
1
解决办法
2041
查看次数

为什么在LEFT JOIN之后我的行数增加了

我试图加入各种数据集来获得一个主表,虽然我设法保留3个左连接后的行数,但在下一步之后,它似乎增加了它.有什么想法吗?

查询3个连接

-------------------------------------------------------------------
--- STEP 4:    ----------------
-------------------------------------------------------------------
SELECT
DISTINCT        Table1.[Field1]
        ,   Table1.[Field2]
        ,   Table3.[Field3]
        ,   Table1.[Field4]
        ,   Table1.[Field5]
        ,   Table1.[Field6]
        ,   Table1.[Field7]
        ,   Table1.[Field8]
        ,   Table1.[Field9]
        ,   Table1.[Field10]
FROM        db1.dbo.raw_tbl_1 AS Table1
LEFT JOIN   db2.dbo.tbl_2 Table2
ON          Table1.Field7 = Table2.[Field13]
    LEFT JOIN   db2.dbo.tbl_3 Table3
    ON          CONVERT(INT,Table1.[Field2]) = Table3.Field14
        LEFT JOIN   db2.dbo.tbl_4Table4
        ON          Table2.Field17= Table4. Field15
WHERE       Table2. Field17 IS NOT NULL
-- 2682270 rows (Desired row count)
Run Code Online (Sandbox Code Playgroud)

查询4个连接(增加行数)

-------------------------------------------------------------------
--- STEP 5:    ----
-------------------------------------------------------------------
SELECT
DISTINCT        Table1.[Field1]
        ,   Table1.[Field2] …
Run Code Online (Sandbox Code Playgroud)

sql sql-server join

5
推荐指数
1
解决办法
9394
查看次数