首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

T-sql仅下标字符串中的数字,不能使用create procedure、create table等

T-SQL是一种用于管理和处理关系型数据库的编程语言。它是Microsoft SQL Server数据库管理系统中的一部分,用于执行查询、插入、更新和删除数据等操作。

下面是关于T-SQL仅提取字符串中的数字的解决方案:

解决方案1:使用PATINDEX函数和SUBSTRING函数

代码语言:sql
复制
DECLARE @str VARCHAR(100) = 'abc123def456ghi789'
DECLARE @startIndex INT, @endIndex INT, @result VARCHAR(100)

SET @startIndex = PATINDEX('%[0-9]%', @str)
SET @endIndex = PATINDEX('%[^0-9]%', SUBSTRING(@str, @startIndex, LEN(@str)))

SET @result = SUBSTRING(@str, @startIndex, @endIndex - 1)

SELECT @result

该解决方案使用PATINDEX函数找到字符串中第一个数字的位置,然后使用SUBSTRING函数提取数字子字符串。

解决方案2:使用REPLACE函数和ISNUMERIC函数

代码语言:sql
复制
DECLARE @str VARCHAR(100) = 'abc123def456ghi789'
DECLARE @result VARCHAR(100)

SET @result = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@str, '0', ''), '1', ''), '2', ''), '3', ''), '4', ''), '5', ''), '6', ''), '7', ''), '8', ''), '9', '')

IF ISNUMERIC(@result) = 1
    SELECT @result
ELSE
    SELECT NULL

该解决方案使用REPLACE函数将字符串中的所有数字替换为空字符串,然后使用ISNUMERIC函数判断结果是否为数字。

这些解决方案可以在T-SQL中直接使用,无需创建存储过程或表。它们适用于需要从字符串中提取数字的场景,例如从包含数字和其他字符的字符串中获取纯数字值。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

sql调用存储过程exec用法_sqlserver存储过程执行日志

大家好,又见面了,我是你们朋友全栈君。 一、【存储过程】 存储过程T-SQL语句编译以后可多次执行,由于T-SQL语句不需要重新编译,所以执行存储过程可以 提高性能。...存储过程Procedure是一组为了完成特定功能SQL语句集合,经编译后存储在数据库,用户通过指 定存储过程名称并给出参数来执行。...1、使用T-SQL语句创建存储过程 CREATE PROC [ EDURE ] procedure_name [ ; number ] [ { @parameter data_type } [ VARYING...语句 [ end ] 2、使用存储过程 使用T-SQLEXECUTE(或EXEC)语句可以执行一个已定义存储过程。...代码示例1 create database test_0425 -- 创建数据库 go use test_0425 go -- 建表 create table student ( stno int

3.3K10

T-SQL程序练习02

具体要求 1)输入:四个 1~9 数字 2)输出:这四个数字组成最大整数 实现如图输出 2....T-SQL程序代码 create procedure AreYouFat( @weight float, @height float, @mess varchar(100) output,...具体要求 写一个T-SQL多语句表值函数 ,根据军衔列出所有的佩戴标记 1)输入:军衔 2)输出:佩戴标记 3)要求:使用多语句表值函数实现(不要试图建表) 4)调用函数实现类似如下输出...T-SQL程序代码 create function ranksign( @sign varchar(10) ) returns @rang table(标志 varchar(10)) as begin...写一个存储过程ReversePoem,实现如下格式输出 1)显示MissWife表内容 2)使用游标,根据MissWife表内容,显示将该表从后往前倒着念结果 2.

64530
  • T-SQL基础(六)之可编程对象

    批 批是一条或多条被客户端作为整体发送给SQL Server进行执行T-SQL语句,SQL Server以GO命令来标识一个批结束,注意,GO语句不能使用分号结尾。...SQL Server以批为单位进行词法、语法分析及语句执行工作。一个批错误不会影响另一个批语句执行,因为不同批在逻辑上彼此独立,不同批包含语句互相独立,彼此互不影响。...EXEC EXEC是T-SQL提供执行动态SQL原始技术,接收一个字符串作为输入并执行字符串语句: USE WJChi; ​ EXEC('SELECT * FROM dbo.UAddress')...创建函数CREATE FUNCTION语句必须是当前批第一条语句,否则报错:'CREATE FUNCTION' 必须是查询批次第一个语句。...触发器个人接触和使用较少,这里不多介绍。详细内容可参考:CREATE TRIGGER (Transact-SQL) 小结 本章内容较为杂乱,但也都是平时编写T-SQL代码时较为常用内容。

    1.6K30

    _T-SQL程序练习02

    具体要求1)输入:四个 1~9 数字 2)输出:这四个数字组成最大整数实现如图输出2....T-SQL程序代码create procedure AreYouFat( @weight float, @height float, @mess varchar(100) output, @bmi...具体要求写一个T-SQL多语句表值函数 ,根据军衔列出所有的佩戴标记 1)输入:军衔 2)输出:佩戴标记 3)要求:使用多语句表值函数实现(不要试图建表) 4)调用函数实现类似如下输出2....写一个存储过程ReversePoem,实现如下格式输出 1)显示MissWife表内容 2)使用游标,根据MissWife表内容,显示将该表从后往前倒着念结果2....T-SQL程序代码/* 建表 */create table MissWife( linetext varchar(50))/* 插入数据 */insert into MissWife values('

    12700

    存储过程

    procedure_name --在存储过程能调用另外一个存储过程,而不能删除另外一个存储过程 复制代码 创建存储过程参数: 1.procedure_name :存储过程名称,在前面加#为局部临时存储过程...例如,名为 orders 应用程序使用过程可以命名为 orderproc;1、orderproc;2 。DROP PROCEDURE orderproc 语句将除去整个组。...如果名称包含定界标识符,则数字不应包含在标识符,只应在 procedure_name 前后使用适当定界符。 3.@parameter: 存储过程参数。可以有一个或多个。...9.ENCRYPTION: 表示 SQL Server 加密 syscomments 表包含 CREATE PROCEDURE 语句文本条目。...本选项不能和 WITH RECOMPILE 选项一起使用。 11.AS :指定过程要执行操作。 12.sql_statement :过程要包含任意数目和类型 Transact-SQL 语句。

    2K30

    SQL Server 性能优化之——T-SQL TVF和标量函数

    作为一个选择,可以创建临时表,临时表上创建适当聚集索引或非聚集索引。 详情如下: 创建适当临时表。 根据T-SQL创建适当聚集索引和非聚集索引。 将TVF数据插入到临时表。...使用TVF低性能T-SQL: 1: alter procedure Unperformant_SP1 2: @empid int 3: as 4: begin 5: select...使用临时表代替TVF: 1: go 2: alter procedure Performant_SP1 3: @empid int 4: as 5: begin 6: create...计算列生成最好是使用系统提供功能,例如:Convert、Cast、Replace等等,并且开发者不能创建UDF,因为UDF通常和该功能相矛盾。...使用计划更新工作 如果不可能使用持久化确定计算列,可以创建普通列并同时创建计划更新工作,更新这些列标量函数输出,然后用T-SQL代替标量函数并且在T-SQL使用这些列。具体如下: a.

    1.5K51

    Table-values parameter(TVP)系列之一:在T-SQL创建和使用TVP

    (2) 将多个数据值捆绑到带限定符字符串或是XML文档,然后再将文本值传递到一个存储过程或语句中。      ...SQL Server 2008T-SQL功能新增了表值参数。利用这个新增特性,我们可以很方便地通过T-SQL语句,或者通过一个应用程序,将一个表作为参数传给函数或存储过程。  ...(1) 在T-SQL创建和使用TVP   (2) 在ADO.NET利用DataTable对象,将其作为参数传给存贮过程   (3) 在ADO.NET利用Collection对象...(3) 在用户自定义表类型定义不能指定缺省值。                                  ...表值参数可以在 SELECT INTO FROM 子句中,也可以在 INSERT EXEC 字符串或存储过程。         4.

    2.9K90

    SQL存储过程

    存储过程可以说是一个记录集吧,它是由一些T-SQL语句组成代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表增删改查),然后再给这个代码块取一个名字,在用到这个功能时候调用他就行了...存储过程好处? 1.由于数据库执行动作时,是先编译后执行。然而存储过程是一个编译过代码块,所以执行效率要比T-SQL语句高。...2.一个存储过程在程序在网络交互时可以替代大堆T-SQL语句,所以也能降低网络通信量,提高通信速率。 3.通过存储过程能够使没有权限用户在控制之下间接地存取数据库,从而确保数据安全。...首先创建一个数据表TestTable CREATE TABLE TestTable( [Id] [int] IDENTITY(1,1) NOT NULL, [UserName] [nvarchar]...--创建存储过程 CREATE PROCEDURE 存储过程名称 AS 需要查询SQL语句 GO --调用存储过程 EXECUTE 存储过程名称 --删除存储过程 drop procedure 存储过程名称

    87810

    3. SQL -- 存储过程

    ,这里只用SQL语句,注意存储过程不能定义如下对象:          Create view               (视图)          Create default         ...create procedure语句文本条目,就是加密了,别人复制数据库而不能复制它,以防以存储过程来读取数据库定义 (5)     参数n2说明一个存储过程可以包含多条T-SQL语句 3: 存储过程要注意几点...: (1)     用户定义存储过程只能在当前数据库中使用(临时过程除外) (2)     成功执行create procedure语句后,过程名存储在sysobjects系统表,而create procedure...,并且不能有任何参数 (4)     Sql_statement语句限制必须使用对象所有者名(就是这个数据库所有者)对数据库对象进行限定语句有: Create table, alter table...Procedure_name_var为create procedure定义存储过程名          @parameter为create procedure定义参数名,value为存储过程实参

    1K20

    Oracle基础 各种语句定义格式

    table 删除表存在信息,只保留表结构,删除数据不可恢复 truncate table 五、 drop table 删除表 六、 drop table <table_name...(_表示一个字符,%表示0个或多个字符) 若字符串包含“_”“%”,可使用escape ‘\’,如 like ‘%s\_t%’ escape ‘\’用来匹配“s_t”字符串 集合运算符 4....,对记录访问是基于rowid,这是存取表数据最快方法。...count:集合元素个数 delete:删除集合中所有元素 delete(x):删除下标为x元素 delete(x,y):删除下标从x到y元素 extend:在集合末尾添加一个元素...extend(x):在集合末尾添加x个元素 extend(x,n):在集合末尾添加n个x副本 first:返回第一个元素下标号,对于varray始终返回1 last:返回最后一个元素下标

    86910

    存储过程详解

    procedure_name --在存储过程能调用另外一个存储过程,而不能删除另外一个存储过程 创建存储过程参数: 1.procedure_name :存储过程名称,在前面加#为局部临时存储过程...例如,名为 orders 应用程序使用过程可以命名为 orderproc;1、orderproc;2 。DROP PROCEDURE orderproc 语句将除去整个组。...如果名称包含定界标识符,则数字不应包含在标识符,只应在 procedure_name 前后使用适当定界符。 3.@parameter: 存储过程参数。可以有一个或多个。...10.FOR REPLICATION :指定不能在订阅服务器上执行为复制创建存储过程。.使用 FOR REPLICATION 选项创建存储过程可用作存储过程筛选,且只能在复制过程执行。...本选项不能和 WITH RECOMPILE 选项一起使用。  11.AS :指定过程要执行操作。 12.sql_statement :过程要包含任意数目和类型 Transact-SQL 语句。

    2.1K122

    Oracle、SQL Server和MySQL隐式转换异同

    两个参数都是字符串,会按照字符串来比较,不做类型转换。 3. 两个参数都是整数,按照整数来比较,不做类型转换。 4. 十六进制值和非数字做比较时,会被当做二进制串。 5....数值型和字符串型之间隐式转换,可以参考如下, MySQL隐式转换,还可能和字符集校对规则相关, CREATE TABLE test1 ( ID varchar(64) COLLATE utf8...上面说了这么多,其实我们也都知道隐式转换风险,而且不同数据库,隐式转换影响因素还不多,更增加了难度,与其冒着风险,找各种补救,不如从源头控制,避免隐式转换,对一些常规类型(字符串、数值、日期),...结合业务需求,定义合适字段类型,程序变量、SQL写法,与定义类型保持一致,就可以解决大部分隐式转换问题。...退而求其次,如果不能做到规范设计和开发,至少在开发测试阶段,通过工具或人肉,检索下当前系统中用了全表扫描语句,再根据字段是否存在索引、where条件两侧数据类型,判断是否因为书写不当造成了隐式转换

    1.4K20

    学习SQL Server这一篇就够了

    T-SQL除了提供标准SQL命令之外,还提供了变量说明、流程控制、功能函数。在SQL Server数据库T-SQL语言由DQL、DCL、DDL、 DML 及流控制语句组成。...位运算符 :执行位操作,两个表达式类型可为整型或与整型兼容数据类型(例如字符型,但不能为image类型)。...DDL触发器,只由T-SQL语句触发。是SQL Server 2005新增功能,也是由相应事件触发,但DDL触发器在执行CREATE、ALTER、DROP语句时触发。...可以使用T-SQL语言编写,也可以使用CLR方式编写。本教程中常说存储过程一般是指用T-SQL语言编写存储过程,而使用CLR方式编写存储过程称为CLR存储过程。...注意:存储过程不能包含一些特殊语句,如:创建及修改视图、创建及修改函数、创建及修改触发器、创建及修改存储过程、创建DEFAULT、创建SCHEMA、USE 数据库

    6K30

    【PLSQL编程基础】

    索引:数字或者字符串下标可以设置为负数 语法: type 类型名称 is table of 数据类型【not null】 index by [pls_integer|binary_interger...|varchar2] 访问没有定义索引,会出现数据找不到异常,但是索引下标不是顺序,所以索引值可能不存在,一次提供exists(index)判断是否存在 范例:使用字符串作为字符索引 范例:使用...rowtype数组 范例:使用记录类型数组 嵌套表:(跳过)start 1、定义简单类型嵌套表 CREATE [OR REPLACE] TYPE 类型名称 AS|IS TABLE OF 数据类型...语句或者plssql直接调用,函数和过程最大区别在于函数可以返回值,而过程智能通过in和out来返回数据, 语法如下:类型为numnber或者varchar时不需要定义长度否则编译不能通过 CREATE...inout,可以将值传到子程序,兵将子程序对变量修改返回到调用处 nocopy子选项:将参数变为引用传递,in和out为复制传递参数 自治事务: 在oracle每个session都有独立事务,

    82940

    数据库总结

    开头命令,如:CreateTable、CreateView及Drop Table等等 94 3-2:T-SQL条件表达式和逻辑运算符 95 a.条件表达式 96 (1...)常量:表示单个指定数据值符合(如:字符,数字、字) 97 (2)列名(表当中列名称,表达式允许使用名称) 98 (3){一元运算符}:仅有一个操作数运算符...662 (3)减少网络流量(反馈信息) 663 (4)可作为安全机制使用(系统存储过程、用户自定义存储过程) 664 b.常用系统存储过程 665...表变量,在内存 797 B.create table #myTable (id int ,names varchar(10)) 798 #局部临时表,当前数据库 799 C.create...):(代码或语句) 806 触发器与表相连,建于某一张表单上 807 触发器是一种特殊存储过程 808 特殊:(1)不能使用exec外部调用或只使用显型调用(insert,update

    4.1K40

    oracle操作

    、连接实例 对象权限: 允许用户操纵一些特定对象,如读取视图,可更新某些列、执行存储过程 常用系统权限 create session...创建会话 create sequence 创建序列 create synonym 创建同名对象 create table 在用户模式创建表 create...any table 在任何模式创建表 drop table 在用户模式删除表 drop any table 在任何模式删除表 create procedure...数据操作和查询语句被包含在PL/SQL代码过程性单元,经过逻辑判断、循环操作完成复杂功能或者计算 2.PL/SQL优点 使一组语句功能形成模块化程序开发 使用过程性语言控制程序结构 可以对程序错误进行处理...好处: 可以实现用简单SQL语句不能实现计算 提高查询效率 使用规则: 只能使用函数,而不是过程 函数不允许DML语句 形参必须为IN 必须返回Oracle支持数据类型,不能使用PL

    1.5K20

    SQLSERVER存储过程语法详解

    ———————– SQLServer 存储过程不拼接SQL字符串实现多条件查询  以前拼接写法   set @sql=’ select * from table where 1=1 ‘   if...限制颇多,包括     不能使用output参数;     不能用临时表;     函数内部操作不能影响到外部环境;     不能通过select返回结果集;     不能update,delete,...注* 在使用过程只需要把T-SqlSQL语句替换为存储过程名,就可以了很方便吧!...,则可使用:   au_info_all 实例4:使用带有参数简单过程   CREATE PROCEDURE au_info @lastname varchar(40), @firstname...firstname = ‘Ann’, @lastname = ‘Dull’ 实例5:使用带有通配符参数简单过程 CREATE PROCEDURE au_info2 @lastname varchar(

    1.7K20

    mysql自定义函数详解_sql自定义函数例子

    介绍下mysql自定义函数例子,以及插入单引号方法,动态执行查询与字符串拼接相关内容。 1、mysql自定义函数例子 mysql不能像oracle 一样写 动态SQL。...复制代码 代码示例: create table aa (id int); delimiter // create procedure test(v_sql varchar(200)) begin set...在MYSQL,当用加号“+”连接两个字段(或者多个字段)时,MYSQL会尝试将字段值转换为数字类型(如果转换失败则认为字段值为0),然后进行字段加法运算。...同理,在计算FAge+’1’时,由于FAge为数字类型,所以不需要进行转换,而’1’为字符串类型,所以MYSQL将’1’尝试转换为数字1,然后计算FAge+1做为计算列值。...在MYSQL中进行字符串拼接要使用CONCAT函数,CONCAT函数支持一个或者多个参数,参数类型可以为字符串类型也可以是非字符串类型,对于非字符串类型参数MYSQL将尝试将其转化为字符串类型,CONCAT

    1.2K00

    SQL Server 2012学习笔记 (三) ----- SQL Server SQL语句

    在很多情况下,可以用CREATE TABLE语句创建数据表、使用ALTER TABLE语句修改表结构、使用DROP TABLE语句删除表;   可以使用CREATE DATABASE创建数据库、ALTER...某些特殊SQL指令不能和别的SQL语句共存在一个批处理,如CREATE TABLECREATE VIEW语句。这些语句只能独自存在于一个单独存储过程。   ...CREATE DEFAULT、CREATE FUNCTION、CREATE PROCEDURECREATE RULE、CREATE SCHEMA、CREATE TRIGGER和CREATE VIEW语句不能在批处理与其他语句组合使用...批处理必须以 CREATE 语句开头,所有跟在该批处理后其他语句将被解释为第一个 CREATE 语句定义一部分。   不能在删除一个对象之后,在同一批处理再次引用这个对象。   ...不能在定义一个CHECK约束之后,在同一个批处理中使用。   不能在修改表一个字段之后,立即在同一个批处理引用这个字段。   使用SET语句设置某些选项值不能应用于同一个批处理查询。

    6.4K20

    T-SQL进阶:超越基础 Level 9:动态T-SQL代码

    跟随Gregory LarsenT-SQL DML进阶系列,其涵盖了更多高级方面的T-SQL语言,如子查询。...此语句将变量@CMD设置为包含SELECT语句和@TABLE变量值级联字符串值。 然后我使用EXECUTE语句执行@CMD变量包含动态TSQL语句。...CREATE TABLE MyData1 (Id int, DataDesc varchar(100)); CREATE TABLE MyData2 (Id int, DataDesc varchar...为了演示动态TSQL如果不能正确管理SQL注入攻击,请先用Lsting 3代码创建一个数据库和一个表。我将使用该数据库和表来演示动态TSQL是如何易受到攻击SQL注入攻击。...EXEC GetProducts 'Red'; Listing 5:正常执行存储在ProcedureGetUserName Listing 5代码调用存储在ProcedureGetUserName

    1.9K20
    领券