我有一个需要创build一个函数将返回一个分隔string的第n个元素。 对于数据迁移项目,我使用SQL脚本将存储在SQL Server数据库中的JSON审计logging转换为结构化报告。 目标是提供一个没有任何代码的脚本使用的sql脚本和sql函数。 (这是在ASP.NET / MVC应用程序中添加新的审计function时使用的短期修复程序) 对于可用的表格示例,不存在分隔string的短缺。 我已经select了一个公共expression式示例http://www.sqlperformance.com/2012/07/t-sql-queries/split-strings 例如:我想从'1,222,2,67,888,1111'
下午,所以我一直在这个问题上花了好几个小时的时间,不能真正摆脱这个最后的坎坷。 下面是我写的这个程序的代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.Data; using System.Data.SqlClient; using System.Configuration; namespace Test { class Program { static void Main() { EventLog alog = new EventLog(); alog.Log = "Application"; alog.MachineName = "."; foreach (EventLogEntry entry in alog.Entries) { SqlConnection connection1 = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=syslog2;Integrated Security=True"); SqlDataAdapter cmd […]
在我们的一个(C#)应用程序中,我们插入/更新一个大图(100个插入和更新)。 这是包装在一个事务中,因为我需要整个事情回滚的情况下出现错误。 我们正在使用Dapper来执行SQL语句。 不幸的是,整个手术目前需要2到8秒。 这是2到8秒我们的数据库中的核心表被locking,导致其他应用程序挂起或遭受锁。 我确定其中的一个操作插入到一个包含超过1亿2千万条logging的表中,大部分时间都占用了,但是我不确定如何优化这个操作。 粗略地说,该表格图如下设置: table A ( id int primary_key, name nvarchar ) table B ( id int primary_key, a_id int foreign_key, # has an index name nvarchar ) 将数据插入A ,还需要将相应的数据插入到B 。 因此,我使用scope_identity()来获取logging的ID并在将logging插入到B时使用它。 伪明智的看起来如下: # open transaction # perform other table inserts # # this is one of the slowest operations for […]
我有一个查询返回一个非常大的数据集。 我无法将其复制并粘贴到我通常使用的Excel中。 我一直在做一些如何直接导出到Excel工作表的研究。 我在运行Microsoft Server 2003的服务器上运行SQL SERVER 2008.我试图使用Microsoft.Jet.OLEDB.4.0数据提供程序和Excel 2007.我已经拼凑了一小段代码,看起来像这样从我在例子中见过。 INSERT INTO OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', 'Data Source=C:\Working\Book1.xlsx;Extended Properties=EXCEL 12.0;HDR=YES') SELECT productid, price FROM dbo.product 然而,这是行不通的,我收到一个错误消息说 “关键字”SELECT“附近的语法错误”。 有没有人有任何想法如何做到这一点或可能是一个更好的方法?
在我的MySQL架构中,我有category(id, parentid, name)表 在MSSQL中,我有CTE查询(从底层开始为所提供的类别ID构build一个类别树: with CTE (id, pid, name) as ( select id, parentid as pid,name from category where id = 197 union all select CTE.pid as id , category.parentid as pid, category.name from CTE inner join category on category.id = CTE.pid ) select * from CTE 如何将该查询转换为MySQL?
我正在使用MS SQL 2008 R2,有三个表格,具有以下模式: 表1:包含每个工作人员的轮class信息 CREATE TABLE workshift ( [ws_id] [bigint] NOT NULL, [start_date] [datetime] NOT NULL, [end_date] [datetime] NOT NULL, [worker_id] [bigint] NOT NULL ) INSERT INTO workshift VALUES (1, '2012-08-20 08:30:00', '2012-08-20 14:30:00', 1) INSERT INTO workshift VALUES (2, '2012-08-20 14:30:00', '2012-08-20 22:30:00', 2) 表2:包含货币面值 CREATE TABLE currency_denom ( [cd_id] [decimal](7, 2) NOT […]
我想写一个存储过程将使用一个参数,这将是表名。 例如: @tablename << Parameter SELECT * FROM @tablename 这怎么可能? 我写了这个: set ANSI_NULLS ON set QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[GetAllInterviewQuestions] @Alias varchar = null AS BEGIN Exec('Select * FROM Table as ' @Alias) END 但它说@Alias附近的语法不正确。
在最近的Microsoft SQL Server版本中是否支持自然连接 ? 还是有一个很好的select,使SQL Server的工作出基于参照完整性的ON子句中的谓词?
对问题“将一列分割成多行”的答案进行了质疑,我在这里重写为[1]。 Type = 'P'含义是什么(以及为什么使用未logging的master..spt_values来分割列)? 它有什么好处? [1] CREATE TABLE dbo.Table1 ( Col1 CHAR(1), Col2 CHAR(1), Col3 CHAR(1), Col4 VARCHAR(50) ) GO INSERT INTO dbo.Table1 VALUES ('A','B','C','1,2,3') GO INSERT INTO dbo.Table1 VALUES ('D','E','F','6,7,8,9') GO SELECT T.col1, RIGHT(LEFT(T.col4,Number-1), CHARINDEX(',',REVERSE(LEFT(','+T.col4,Number-1)))) FROM master..spt_values, table1 T WHERE Type = 'P' AND Number BETWEEN 1 AND LEN(T.col4)+1 AND (SUBSTRING(T.col4,Number,1) = ',' — […]
为什么下面的查询返回“错误转换数据typesvarchar到bigint”? 不是IsNumeric使CAST安全吗? 我已经尝试了每个数字数据types的转换,并得到相同的“错误转换…”错误。 我不相信结果数字的大小是一个问题,因为溢出是一个不同的错误。 有趣的是,在pipe理工作室中,结果实际上显示在结果窗格中一秒钟之后,错误又回来了。 SELECT CAST(myVarcharColumn AS bigint) FROM myTable WHERE IsNumeric(myVarcharColumn) = 1 AND myVarcharColumn IS NOT NULL GROUP BY myVarcharColumn 有什么想法吗?