道歉一个冗长的职位,但我需要张贴一些代码来说明问题。 受问题启发* 不使用select的原因是什么? ,我决定指出一些我之前注意到的select *行为的一些观察。 所以让我们的代码自己说话: IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[starTest]') AND type in (N'U')) DROP TABLE [dbo].[starTest] CREATE TABLE [dbo].[starTest]( [id] [int] IDENTITY(1,1) NOT NULL, [A] [varchar](50) NULL, [B] [varchar](50) NULL, [C] [varchar](50) NULL ) ON [PRIMARY] GO insert into dbo.starTest(a,b,c) select 'a1','b1','c1' union all select 'a2','b2','c2' union all […]
如何计算我的这个格式为“timeSpent”的时间总和:HH:mm在SQL中? 我正在使用MySQL。 我的专栏的types是时间。 它有这个结构 时间从10:00:00 12:00:00 02:00:00 TimeUntil 08:00:00 09:15:00 01:15:00 所花费的时间 总时间03:15:00
我的桌子上有一列,里面存放着多个由逗号分隔的ID。 有没有一种方法可以在查询的“IN”子句中使用此列的值。 列( city )具有像6,7,8,16,21,2值 我需要使用 select * from table where e_ID in (Select city from locations where e_Id=?) 我对Crozin的答案感到满意,但我愿意接受build议,意见和select。 随意分享您的意见。
我很想知道人们如何使用表别名。 我工作的其他开发人员总是使用表别名,并始终使用a,b,c等的别名。 这是一个例子: SELECT a.TripNum, b.SegmentNum, b.StopNum, b.ArrivalTime FROM Trip a, Segment b WHERE a.TripNum = b.TripNum 我不同意他们,认为应该更加谨慎地使用餐桌别名。 我认为应该在查询中包含同一个表两次时使用,或者当表名非常长时,在查询中使用较短的名称将使查询更易于阅读。 我也认为这个别名应该是一个描述性的名字,而不仅仅是一个字母。 在上面的例子中,如果我觉得我需要使用1个字母的表别名,我会使用T作为Trip表和S表段表。
这是SS 2005的。 为什么我只有4000个字符而不是8000个字符? 它在4000处截断string@SQL1。 ALTER PROCEDURE sp_AlloctionReport( @where NVARCHAR(1000), @alldate NVARCHAR(200), @alldateprevweek NVARCHAR(200)) AS DECLARE @SQL1 NVARCHAR(Max) SET @SQL1 = 'SELECT DISTINCT VenueInfo.VenueID, VenueInfo.VenueName, VenuePanels.PanelID, VenueInfo.CompanyName, VenuePanels.ProductCode, VenuePanels.MF, VenueInfo.Address1, VenueInfo.Address2, '' As AllocationDate, '' As AbbreviationCode, VenueInfo.Suburb, VenueInfo.Route, VenueInfo.ContactFirstName, VenueInfo.ContactLastName, VenueInfo.SuitableTime, VenueInfo.OldVenueName, VenueCategories.Category, VenueInfo.Phone, VenuePanels.Location, VenuePanels.Comment, [VenueCategories].[Category] + '' Allocations'' AS ReportHeader, ljs.AbbreviationCode AS PrevWeekCampaign […]
为什么使用'*'来build立一个视图不好? 假设你有一个复杂的连接,所有的字段都可以用在某个地方。 那么你只需要select所需的领域。 SELECT field1, field2 FROM aview WHERE … “aview”视图可以是SELECT table1.*, table2.* … FROM table1 INNER JOIN table2 … 如果两个字段在table1和table2中具有相同的名称,则会出现问题。 这只是为什么在视图中使用“*”是不好的原因? 使用'*',您可以在不同的上下文中使用视图,因为信息在那里。 我错过了什么? 问候
我怎么能在表上设置一个约束,以便只有一个logging的isDefault位字段设置为1? 该约束不是表范围,而是由FormID指定的每组行的一个默认值。
我已阅读并尝试将易受攻击的SQL查询注入到我的应用程序中。 这是不够安全的。 我只是使用语句连接进行数据库validation和其他插入操作。 preparedStatements安全吗? 而且这个说法也会有什么问题吗?
我正在使用REGEXP_SUBSTR()从逗号分隔的列表中返回第n个值。 当所有值都存在时,这工作正常,但如果一个项目为空,则失败。 下面是一个在所有值都存在的情况下工作的例子,我select第二个出现的不是逗号的一个或多个字符: SQL> select REGEXP_SUBSTR('1,2,3,4,5,6', '[^,]+', 1, 2) data 2 from dual; D – 2 但是当第二个值为空时,我真的得到了列表中的第三个项目,当然这确实是第二个出现的一个或多个不是逗号的字符。 但是,我需要它作为第二个项目是空的返回NULL: SQL> select REGEXP_SUBSTR('1,,3,4,5,6', '[^,]+', 1, 2) data 2 from dual; D – 3 如果我更改正则expression式以允许零个或多个字符而不是一个或多个字符,则对于超过null的数字也会失败: SQL> select REGEXP_SUBSTR('1,,3,4,5,6', '[^,]*', 1, 4) data 2 from dual; D – 3 我需要允许null,但似乎无法得到正确的语法。 从逻辑上讲,我需要返回第n个逗号之前是否存在数据(也允许最后一个值)。 有任何想法吗?
我正在创build一个在PostgreSQL 9.2.4中存储任意date/时间范围的数据库。 我想对这个强制date/时间范围不重叠和不相邻(因为两个相邻范围可以表示为单个连续范围)的数据库施加约束。 为此,我正在使用带有GiST索引的EXCLUDE约束。 这是我目前的限制: ADD CONSTRAINT overlap_exclude EXCLUDE USING GIST ( box( point ( extract(EPOCH FROM "from") – 1, extract(EPOCH FROM "from") – 1 ), point ( extract(EPOCH FROM "to"), extract(EPOCH FROM "to") ) ) WITH && ); from和to的列都是TIMESTAMP WITHOUT TIME ZONE ,并且是以UTC格式存储的date/时间(在将数据插入到应用程序中的这些列之前,我将其转换为UTC,并且在postgresql.conf中将数据库的时区设置为“UTC” )。 但是我想我可能会遇到的问题是,这个约束使得(不正确的)假设没有时间增量小于一秒。 值得注意的是,对于我所存储的特定数据,我只需要第二个解决scheme。 不过,我觉得我可能仍然需要处理这个问题,因为SQLtypes的timestamp和timestamptz的分辨率都高于一秒。 我的问题是:是否有任何问题,简单地假设第二个决议,因为这是我的应用程序的所有需求(或希望),或者,如果有,我怎么能改变这个约束来处理一秒健壮的方式?