我有如下所示的值:
D:\DM-250\Insert_Jobs-QA-UAT\14-FILE_A_UpdateInsert.dts
D:\DM-250\Insert_Jobs-QA-UAT\Something_DaisyChain\14-stuff_and_things_UpdateInsert.dts
D:\DM-250\14-another_file.dts
Run Code Online (Sandbox Code Playgroud)
我想要这 3 个值的最末端,从最后一个"\"字符开始。
我尝试使用FINDSTRING,但我不知道如何获取最后一次出现的字符。
有什么建议?
我正在使用SSIS包填充表.
这个想法是,每当包上传到表时,它将使用时间戳值getdate().
当我打开它时,我的DDL看起来像这样:
CREATE TABLE [REPORTING].[post_ssis_table_1](
[validation_key] [int] IDENTITY(1,1) NOT NULL,
[ssis_ran_date] [datetime] NULL,
[server_name] [varchar](255) NULL,
[data_base] [varchar](255) NULL,
--A bunch of other irrelevant columns
[success_status] [varchar](255) NULL,
[success_criteria] [varchar](255) NULL,
PRIMARY KEY CLUSTERED
(
[validation_key] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [REPORTING].[post_ssis_tbl_1] ADD DEFAULT (getdate()) FOR [ssis_ran_date]
GO
Run Code Online (Sandbox Code Playgroud)
注意:我没有输入alter语句,这就是我打开DDL时的样子.
当我插入行时,为什么没有为[ssis_ran_date]填充默认值?它实际上只是保持为空.
我有一个列保存为字符数据类型.本专栏将作为日期使用.该列以该格式显示"YYYY-MM-DD".
这是一个问题,因为如果我需要按日期过滤,我必须去
select col_1, col_2
from table
where date LIKE '2016-04%;
Run Code Online (Sandbox Code Playgroud)
如果我想搜索日期范围,这将变成一个巨大的复杂混乱.
将此转换为"日期"数据类型的最简单方法是什么?我希望它继续以YYYY-MM-DD顺序(没有时间戳).
我的最终目标是能够以这样的格式搜索日期:
select col_1, col_2
from table
where date between 2016-01-01 AND 2016-05-31;
Run Code Online (Sandbox Code Playgroud)
你们推荐什么?我很害怕如果我使用alter语句来转换我的数据类型,我将破坏我的约会.(我有一份保存的数据副本,可以再次上传,但这需要永远.)
编辑:这是一个非常大的表.
编辑第2部分:我最初将数据存储为varchar数据类型,因为我的日期没有正确上传,当我尝试保存为日期数据类型时收到错误消息.此列中的每个日期都是"YYYY-MM-DD"顺序.我的解决方案是将其保存为varchar以避免错误消息(我无法弄清楚出了什么问题.我甚至摆脱了前导和尾随空格.)
我有一个看起来像这样的数组:
guest_list = ['P', 'r', 'o', 'f', '.', ' ', 'P', 'l', 'u', 'm', '\n', 'M', 'i', 's', 's', ' ', 'S', 'c', 'a', 'r', 'l', 'e', 't', '\n', 'C', 'o', 'l', '.', ' ', 'M', 'u', 's', 't', 'a', 'r', 'd', '\n', 'A', 'l', ' ', 'S', 'w', 'e', 'i', 'g', 'a', 'r', 't', '\n', 'R', 'o', 'b', 'o', 'c', 'o', 'p']
Run Code Online (Sandbox Code Playgroud)
我想要的是一个如下所示的数组:
guest_list = ['Prof.Plum', 'Miss Scarlet', 'Col. Mustard', 'Al Sweigart', 'Robocop']
Run Code Online (Sandbox Code Playgroud)
换句话说,直到'\n'出现,我希望将所有字符串值组合成1个值.
有什么建议?
编辑#1:
这是我原始代码的一部分:
ogl = …Run Code Online (Sandbox Code Playgroud) 我有一个如下所示的数据框:
df1
A Q
0 Apple chair
1 orange desk
2 pear monitor
3 salad room
df2 = df1[['Q']]
print(df2)
Q
0 chair
1 desk
2 monitor
3 room
df2 = df2.insert(1, 'file_id_value', range(0, len(df2)))
print(df2)
Run Code Online (Sandbox Code Playgroud)
不返回任何内容,特别是单词'None'。你知道我做错了什么吗?我没有收到错误消息。
我正在与 Unity 合作。
在 Unity 中,我构建了我的程序。这是一个非常简单的程序。它只是我放在屏幕上的一个立方体。
我单击构建并创建了一个 Visual Studios 解决方案。
我在 Visual Studios 2019 中打开了这个解决方案,然后点击了开始(除了开始没有其他选项)。
这是出现在我的屏幕上的内容:
我怎样才能摆脱错误消息?
编辑:
我正在尝试使用 Hololens 模拟器。
这篇文章建议在安装 Visual Studio 2019 时不要安装 Unity 工具,这就是我没有这样做的原因。
编辑#2:
这是我来自 Visual Studio 2019 的整个解决方案的图像。
我有一个名为列的表PtObjId中的INT数据类型。
根据我的理解,通过查看位于此处的Microsoft 文档的线程。我最多只能存储 +/- 2,147,483,647 的值
如果我运行此查询:
Select top 100 *
from [table]
where [PtObjId] IN (44237141916)
Run Code Online (Sandbox Code Playgroud)
应该不会报错吧?
为什么此查询错误如下:
select top 100 *
from [table]
where [PtObjID] IN ('44237141916')
Run Code Online (Sandbox Code Playgroud)
但最上面的查询没有出错?
我有以下数据:
test_date
2018-07-01
2018-07-02
...
2019-06-30
2019-07-01
2019-07-02
...
2020-06-30
2020-07-01
Run Code Online (Sandbox Code Playgroud)
我想row_number每次都增加一个值,right(test_date,5) = '07-01'以便我的最终结果如下所示:
test_date row_num
2018-07-01 1
2018-07-02 1
... 1
2019-06-30 1
2019-07-01 2
2019-07-02 2
... 2
2020-06-30 2
2020-07-01 3
Run Code Online (Sandbox Code Playgroud)
我尝试做这样的事情:
, ROW_NUMBER() OVER (
PARTITION BY CASE WHEN RIGHT(a.[test_date],5) = '07-01' THEN 1 ELSE 0 END
ORDER BY a.[test_date]
) AS [test2]
Run Code Online (Sandbox Code Playgroud)
但这对我不起作用。
有什么建议?
假设我们有以下查询
select
*
from
table_1 as a
left join
table_2 as b
on
a.[id_1] = b.[emp_id] OR
a.[id_1] = b.[worker_id]
Run Code Online (Sandbox Code Playgroud)
该查询与以下查询有何不同:
select
*
from
table_1 as a
left join
table_2 as b
on
a.[id_1] = b.[emp_id]
union
select
*
from
table_1 as a
left join
table_2 as b
on
a.[id_1] = b.[worker_id]
Run Code Online (Sandbox Code Playgroud)
就结果而言,这两个查询不是同义词吗?与联合的查询执行得更快,但我得到了不同的记录数,这就是我问的原因。
编辑 #1
没有索引,我不允许添加任何索引。
顶部查询需要 20 分钟才能运行。底部查询需要 2 分钟才能运行。
这就是为什么我试图以复制顶部查询的方式操作底部查询。
在顶级查询中返回 39,758 条记录。第二次返回大约 78,000 条记录。
使用 anOR而不是 anIN因为这是有人设计存储过程的方式。我只是将它拆开来尝试调整存储过程中的其他内容。
编辑#2:
我正在创建#temp 表并在这些表上添加索引作为解决方案。在添加索引之前,我需要确保我复制了相同数量的记录。
**编辑#3:**
如果你想重现我在做什么,这里有一个例子:
drop …Run Code Online (Sandbox Code Playgroud) 在查看 SQL Server Management Studio (SSMS) 时,哪个更好,为什么?在某些情况下我们应该使用一种吗?
我分不清它们之间的区别。
假设我有以下值:
1 min 7 sec
23 sec
6 hours 10 min 14 sec
Run Code Online (Sandbox Code Playgroud)
我想回来:
7 sec
23 sec
14 sec
Run Code Online (Sandbox Code Playgroud)
有没有办法在VBA中执行此操作?
如果未使用其值,则可能不会始终存在秒,分或小时.
即如果有60秒,它只会说1分钟.如果确切地说有60分钟,那就说1小时.
sql-server ×5
t-sql ×5
sql ×3
python ×2
arrays ×1
excel ×1
excel-vba ×1
int ×1
pandas ×1
postgresql ×1
python-3.x ×1
sqldatatypes ×1
ssis ×1
ssis-2016 ×1
ssms ×1
vba ×1