天道酬勤,学无止境

sql-server-2005

SQL Email Verification Function using Regex

I am trying to create a function in SQL Server 2005 to check to see if an email is in a valid format with regular expressions. Here is what I have so far: CREATE FUNCTION isValidEmailFormat ( @Email varchar(100) ) RETURNS bit AS BEGIN DECLARE @Result bit SET @Result = (SELECT CASE WHEN @Email LIKE '%[a-zA-Z0-9_\-]+@([a-zA-Z0-9_\-]+\.)+ (com|org|edu|nz|au])%' THEN 1 ELSE 0 END AS Valid) RETURN @Result END Am I doing something wrong with my regular expression? Or do I have to do something more to compare a varchar to a regular expression? -Edit- Right now, whatever string I put in returns a 0

2021-07-13 12:15:43    分类:问答    sql   regex   sql-server-2005

Using cast in insert statement

I am inserting some raw data into a table in MS SQL 2005 from excel. Some of these data are not formatted correctly ie the amount colum is formatteT as a number 12345 whereas i need to be like 123.45 so i use this CAST(TRANSACTION_HISTORY.AMOUNT AS decimal) / 100 to convert it correctly. However is there a way to use the cast in an insert statement?? thanks

2021-07-13 05:10:27    分类:问答    sql   sql-server-2005

Is there an Access equivalent of the SQL Server NewId() function?

I have written SQL statements (stored in a text document) that load data into a SQL Server database. These statements need to be repeated daily. Some of the statements use the NewId() function to populate a keyed field in the database, and this works fine. While I'm in the process of writing an application to replicate these statements, I want to use Access queries and macros instead of copying and pasting queries into SQL Server, thus saving me time on a daily basis. All is working fine but I can't find any function that will replace the SQL Server NewId() function. Does one exist or is there

2021-07-13 05:09:10    分类:问答    sql-server-2005   ms-access

跨连接列的全文搜索?(Full-text search across concatenated columns?)

问题 我是自由文本搜索的新手,所以请原谅新手问题。 假设我有以下全文索引: Create FullText Index on Contacts( FirstName, LastName, Organization ) Key Index PK_Contacts_ContactID Go 我想对连接的所有三列进行自由文本搜索 FirstName + ' ' + LastName + ' ' + Organization 所以例如 搜索jim smith返回所有名为 Jim Smith 的联系人搜索smith ibm返回所有在 IBM 工作的名为 Smith 的联系人 这似乎是一个相当普遍的场景。 我原以为这会起作用: Select c.FirstName, c.LastName, c.Organization, ft.Rank from FreeTextTable(Contacts, *, 'smith ibm') ft Left Join Contacts c on ft.[Key]=c.ContactID Order by ft.Rank Desc 但这显然是在做smith OR ibm ; 它返回了很多不在 IBM 工作的史密斯,反之亦然。 令人惊讶的是,搜索smith AND ibm产生相同的结果。 这就是我想要的... Select c.FirstName, c

2021-07-13 04:38:59    分类:技术分享    sql-server   sql-server-2005   full-text-search

将 SQL Server 数据库从 2005 年转换为 2000 年(Convert SQL Server Database from 2005 to 2000)

问题 我们有一个需要转换回 SQL Server 2000 的 Microsoft SQL Server 2005 数据库。有人对我应该使用什么方法或工具来执行此转换有任何建议吗? 我们不使用数据库中的任何 SQL Server 2005 特定功能,因此这不会使转换出现问题。 我应该提到,我发现 Microsoft SQL Server 导出工具在处理自动生成的密钥时非常有问题,因此对替代工具的建议将不胜感激。 回答1 在 SQL2005 中为您的数据库生成一个完整的脚本,并将“服务器版本脚本”选项更改为 SQL Server 2000。您现在可以在 SQL 2000 服务器上重新创建您的数据库。 完成后,使用导出数据功能从 SQL 2005 导出到 SQL 2000。 回答2 试用 RedGate SQL ToolBelt,然后使用: SQL Compare 转移数据库 SQL 数据比较以传输数据 回答3 编写整个数据库的脚本创建一个新的 SQL2000 数据库在新数据库上运行脚本将数据从SQL2005导入到SQL2000数据库(方法很多) 某处可能有一个工具可以为您完成所有这些工作,尽管我不知道这样做的频率有多高。 回答4 你想要做的就是降级。 谷歌提供了很多结果,但这里有一个关于微软论坛线程的很好的演练(向下滚动到页面底部附近)。

2021-07-13 04:15:47    分类:技术分享    sql-server-2005   sql-server-2000

使用桌面应用程序部署 SQL Server Express 数据库?(deploy SQL Server Express database with desktop app?)

问题 我已经在 .NET 中创建了我的第一个基于数据库的桌面应用程序,但无法理解如何使用应用程序安装程序部署数据库,以便一次性安装数据库、应用程序和 SQL Server。 如果我只部署 SQL Server 的本机客户端和安装程序的数据库,它会工作吗? 应用程序非常频繁地使用数据库。 回答1 如果你想使用它,你需要安装 SQL Express 引擎。 仅部署客户端连接将为您提供“客户端连接”名称所暗示的内容:您将能够连接到 SQL Server。 但是只有正在运行的 SQL Server 实例才能读/写您的应用程序数据库。 SQL Express 安装 MSI 实际上是非常可定制的,并允许许多场景,包括无人值守安装和远程部署。 有关最基本的选项,请参阅在安装期间配置 SQL Express。 您的应用程序安装程序必须调用传递所需参数的 Express 安装程序。 回答2 使用 click once 您可以使 sql server 表达主项目的依赖项,并且它将与安装数据一起部署并安装,如果尚未安装,则在您首次安装应用程序时。 您可以在 Visual Studio 的项目属性中执行此操作。

2021-07-13 04:14:32    分类:技术分享    sql-server   sql-server-2005   deployment

从同一个/另一个表中的另一列向 XML 列添加属性(Add an attribute to the XML Column from another column in the same/another table)

问题 这是我的场景: --ORDER table OrderID OrderCode DateShipped ShipmentXML 1 ABC 08/06/2013 <Order><Item CustomerName="BF" City="Philadelphia" State="PA"></Item></Order> 2 XYZ 08/05/2013 <Order><Item CustomerName="TJ" City="Richmond" State="VA"></Item></Order> 在此过程中的某个时刻,我将知道这些订单的相应 TrackingNumber。 跟踪号在另一个表中可用,如下所示: --TRACKING table TrackingID OrderCode TrackingNumber 98 ABC 1Z1 99 XYZ 1Z2 我期待的输出如下: OrderID OrderCode ShipmentXML 1 ABC <Order><Item CustomerName="BF" City="Philadelphia" State="PA" DateShipped="08/06/2013" TrackingNumber="1Z1"></Item></Order> 2 XYZ <Order><Item CustomerName="TJ" City=

2021-07-13 04:00:16    分类:技术分享    tsql   sql-server-2005   sqlxml

当您在 SQL Server 中创建新登录时,它默认选择 db_owner(When you create a new login in SQL Server it selects db_owner by default)

问题 我在 SQL Server 2008 R2 中创建新 SQL 用户时遇到了一些问题。 当我使用 SQL Server Management Studio 时,它默认检查db_owner角色成员资格。 我只想创建一个具有只读访问权限的新 sql 用户。 即使使用以下原始 SQL,它仍会创建具有 db_owner 级别权限的用户。 <!-- language: lang-sql --> CREATE LOGIN readonlyuser WITH PASSWORD = '12345',CHECK_POLICY = OFF, DEFAULT_DATABASE=mydatabase GO USE mydatabase GO CREATE USER readonlyuser FOR LOGIN readonlyuser GO EXEC sp_addrolemember 'db_datareader', 'readonlyuser' 现在,如果我使用新创建的用户登录 SQL Server Management Studio,我基本上可以访问任何表并以任何我想要的方式修改任何数据。 这正是我不想做的。 我只想被读取数据而不是修改任何数据 奇怪的是,如果我查看数据库的角色, readonlyuser位于db_datareader而不是db_owner 。 那么为什么 SQL

2021-07-13 03:57:55    分类:技术分享    sql   sql-server   sql-server-2008   sql-server-2005

如何获得每个科目获得最高分的学生的姓名?(How to get the name of a the student who got max marks in each subject?)

问题 我有下表 Name | Subject | Marks -------------------------- a M 20 b M 25 c M 30 d C 44 e C 45 f C 46 g H 20 在这里,我有一个“学生”表,我想获取获得的学生的姓名学生表中每个科目的最大分数,如下面的输出。 Name | Subject | Marks c M 30 f c 46 g h 20 回答1 您可以使用 ROW_NUMBER 函数只返回每个主题的“最佳”行: SQL小提琴 MS SQL Server 2008 架构设置: CREATE TABLE Student ([Name] varchar(1), [Subject] varchar(1), [Marks] int) ; INSERT INTO Student ([Name], [Subject], [Marks]) VALUES ('a', 'M', 20), ('b', 'M', 25), ('c', 'M', 30), ('d', 'C', 44), ('e', 'C', 45), ('f', 'C', 46), ('g', 'H', 20) ; 查询 1 : SELECT Name, Subject, Marks FROM( SELECT *, ROW_NUMBER()OVER(PARTITION BY

2021-07-13 03:48:19    分类:技术分享    sql   sql-server   sql-server-2008   sql-server-2005   sql-server-2008-r2

SQL Server (2005) - “Deleted On” DATETIME 和索引(SQL Server (2005) - “Deleted On” DATETIME and Indexing)

问题 我有一个与数据库设计相关的问题。 我正在使用的数据库需要以某种方式处理数据,而这些数据永远不会被物理删除。 我们开始向某些表添加“DeleteDateTime”列的路径,默认情况下为 NULL,但一旦标记将标记为已删除记录。 这使我们能够轻松地存档我们的数据,但我仍然对一些领域感到茫然,特别是这是否符合最佳实践以及如何有效地对这些表进行索引。 我给你举个例子:我们有一个名为“Courses”的表,它有一个由“SiteID”和“CourseID”列组成的复合主键。 该表还有一个名为“DeleteDateTime”的列,根据我上面的描述使用。 我无法使用 SQL Server 2008 筛选视图功能,因为我们必须兼容 SQL Server 2005。 我应该在该表的聚集索引中包含“DeleteDateTime”吗? 如果是这样,它应该是索引中的第一列(即“DeleteDateTime、SiteID、CourseID”)... 有没有人有任何理由为什么我应该或不应该遵循这种方法? 谢谢! 回答1 您是否有可能将那些“死”记录转移到单独的表中? 例如,对于您的Courses表,有一个Courses_deleted表或类似的东西,具有相同的结构。 当您“删除”一条记录时,您基本上只是将其移动到“死表”。 这样,您实际当前数据的索引就会保持小而灵活.... 如果你需要一个聚合视图

2021-07-13 02:14:56    分类:技术分享    sql-server   sql-server-2005   indexing