Tag: sql

MS Access(Jet / ACE)中的无表联合查询

这按预期工作: SELECT "Mike" AS FName 这会失败,并显示错误“查询input必须包含至less一个表或查询”: SELECT "Mike" AS FName UNION ALL SELECT "John" AS FName 这只是Jet / ACE数据库引擎的一个怪癖/限制,还是我错过了一些东西?

非networkingSQL注入

似乎有一些关于SQL注入攻击的歇斯底里。 最近在这里 如何根据另一个字段中的查找值返回一个字段中的值 如果我在Excel中创build一个连接到Access数据库的macros,我真的不得不关心SQL注入吗? 这不是在networking上,它在我的办公室使用(你们记得桌面?)。 我不担心我的同事要破坏我。 如果他们足够聪明的做一个SQL注入,是不是足够聪明来破解我的加载项密码,只是改变代码?

从另一列计算的列?

鉴于下表: id | value ————– 1 6 2 70 有没有办法添加一个基于另一列在同一个表中自动计算的列? 像VIEW一样,但是是同一张桌子的一部分。 作为一个例子, calculated将是value一半。 Calculated value应该在value更改时自动更新,就像VIEW一样。 结果将是: id | value | calculated ———————– 1 6 3 2 70 35

为什么SQL Server丢失了毫秒?

我有一个这样的表结构: CREATE TABLE [TESTTABLE] ( [ID] [int] IDENTITY(1,1) NOT NULL, [DateField] [datetime] NULL, [StringField] [varchar](50), [IntField] [int] NULL, [BitField] [bit] NULL ) 我执行下面的代码: BEGIN INSERT INTO TESTTABLE (IntField, BitField, StringField, DateField) VALUES ('1', 1, 'hello', {ts '2009-04-03 15:41:27.378'}); SELECT SCOPE_IDENTITY() END 接着 select * from testtable with (NOLOCK) 我的结果显示: 2009-04-03 15:41:27.*377* 为DateField列。 任何想法,为什么我似乎失去了一个毫秒?

LISTAGG函数:“string连接的结果太长”

我正在使用Oracle SQL开发人员版本3.0.04。 我试图使用函数LISTAGG将数据分组在一起。 CREATE TABLE FINAL_LOG AS SELECT SESSION_DT, C_IP, CS_USER_AGENT, listagg(WEB_LINK, ' ') WITHIN GROUP(ORDER BY C_IP, CS_USER_AGENT) "WEB_LINKS" FROM webviews GROUP BY C_IP, CS_USER_AGENT, SESSION_DT ORDER BY SESSION_DT 但是,我不断收到错误, SQL错误:ORA-01489:string连接的结果太长 我很确定,输出可能超过4000,因为这里提到的WEB_LINK是一个URL干和URL查询的连接值。 有没有办法绕过它,或者有其他的select吗?

SQL Express连接string:相对于应用程序位置的mdf文件位置

我正在使用SQL Express数据库作为C#中的unit testing项目的一部分。 我的数据库位于这里: ./Databases/MyUnitTestDB.mdf 我想在app.config使用相对path或variables,而不是将连接string定义为: AttachDbFilename=C:\blah\blah\blah\yea\yea\yea\MyApplication\Databases\MyUnitTestDB.mdf 我已经看到|DataDirectory|的使用 但我是否正确认为这只适用于Web应用程序? 我想在应用程序configuration文件中控制这个,因为在生产中应用程序使用托pipe的sql数据库。

MySQL中“in子句”中的条目数

我有三个表来定义用户: USER: user_id (int), username (varchar) USER_METADATA_FIELD: user_metadata_field_id (int), field_name (varchar) USER_METADATA: user_metadata_field_id (int), user_id (int), field_value (varchar) 我想要创build一个中间层用户,可以在应用程序中对其他用户有一定的访问权限。 要确定哪些用户login使用可以访问,我正在使用像下面这样的子查询: SELECT user_id FROM user WHERE user_id IN (SELECT user_id FROM user_metadata WHERE user_metadata_field_id = 1 AND field_value = 'foo') 目前,我将子查询string存储在一个variables中,然后在每次需要拉取用户列表时,将其dynamic插入到外部查询中。 这样做后,我想,“它只是存储一个实际的user_idstring”。 所以,而不是将其存储在一个variables中… $subSql = "SELECT user_id FROM user_metadata WHERE user_metadata_field_id = 1 AND field_value = […]

从表中删除标识

我们有一个5GB的表(接近5亿行),我们要删除其中一列的标识属性,但是当我们试图通过SSMS来实现时,它会超时。 这可以通过T-SQL完成吗?

在Microsoft SQL Server 2000中模拟MySQL LIMIT子句

当我处理Zend Framework的数据库组件时 ,我们试图抽象MySQL,PostgreSQL和SQLite支持的LIMIT子句的function。 也就是说,创build一个查询可以这样做: $select = $db->select(); $select->from('mytable'); $select->order('somecolumn'); $select->limit(10, 20); 当数据库支持LIMIT ,会产生如下的SQL查询: SELECT * FROM mytable ORDER BY somecolumn LIMIT 10, 20 这对于不支持LIMIT的数据库品牌来说更为复杂(顺便提一下,该子句不是标准SQL语言的一部分)。 如果可以生成行号,则使整个查询成为派生表,并在外部查询中使用BETWEEN 。 这是Oracle和IBM DB2的解决scheme。 Microsoft SQL Server 2005有一个相似的行号function,所以可以这样写查询: SELECT z2.* FROM ( SELECT ROW_NUMBER OVER(ORDER BY id) AS zend_db_rownum, z1.* FROM ( …original SQL query… ) z1 ) z2 WHERE z2.zend_db_rownum […]

不区分大小写的string比较在LINQ到SQL中

我读过使用ToUpper和ToLower来执行不区分大小写的string比较是不明智的,但是当涉及到LINQ-to-SQL时,我看不到任何其他select。 String.Compare的ignoreCase和CompareOptions参数被LINQ-to-SQL忽略(如果您使用的是区分大小写的数据库,即使您要求区分大小写的比较,也可以区分大小写)。 ToLower或ToUpper在这里最好的select? 这个比那个好吗? 我以为我在某个地方看过ToUpper比较好,但我不知道这里是否适用。 (我正在做很多代码评论,每个人都在使用ToLower。) Dim s = From row In context.Table Where String.Compare(row.Name, "test", StringComparison.InvariantCultureIgnoreCase) = 0 这转换为一个SQL查询,它简单地将row.Name与“test”进行比较,并且不会在区分大小写的数据库上返回“Test”和“TEST”。