如何根据具有Like的功能进行选择?

时间:2015-11-10 10:05:51

标签: sql mysqli

从另一个线程我得到了这个功能:

CREATE FUNCTION dbo.ShowWhiteSpace (@str varchar(8000))
RETURNS varchar(8000)
AS
BEGIN
    DECLARE @ShowWhiteSpace varchar(8000);
    SET @ShowWhiteSpace = @str
    SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(32), '[?]')
    SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(13), '[CR]')
    SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(10), '[LF]')
    SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(9),  '[TAB]')
    SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(1),  '[SOH]')
    SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(2),  '[STX]')
    SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(3),  '[ETX]')
    SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(4),  '[EOT]')
    SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(5),  '[ENQ]')
    SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(6),  '[ACK]')
    SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(7),  '[BEL]')
    SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(8),  '[BS]')
    SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(11), '[VT]')
    SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(12), '[FF]')
    SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(14), '[SO]')
    SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(15), '[SI]')
    SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(16), '[DLE]')
    SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(17), '[DC1]')
    SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(18), '[DC2]')
    SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(19), '[DC3]')
    SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(20), '[DC4]')
    SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(21), '[NAK]')
    SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(22), '[SYN]')
    SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(23), '[ETB]')
    SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(24), '[CAN]')
    SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(25), '[EM]')
    SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(26), '[SUB]')
    SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(27), '[ESC]')
    SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(28), '[FS]')
    SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(29), '[GS]')
    SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(30), '[RS]')
    SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(31), '[US]')
    RETURN(@ShowWhiteSpace)
END


select DBO.SHOWWHITESPACE(ITEM_NUM) FROM ITEM

我用这个我得到一个列表,其中包含[CR] [LF]的一些行。所以我很乐意只选择那些,所以我可以同时更换它们。我该怎么做?

我的想法是做这样的事......但它什么也没有回报。我知道它应该返回4行。

select DBO.SHOWWHITESPACE(i.ITEM_NUM) as ITEN_NUM 
FROM ITEM i
WHERE i.ITEM_NUM LIKE '%CR%'

1 个答案:

答案 0 :(得分:1)

您还需要在WHERE子句中应用该函数,以仅获取包含CR的行:

select DBO.SHOWWHITESPACE(i.ITEM_NUM) as ITEN_NUM 
FROM ITEM i
WHERE DBO.SHOWWHITESPACE(i.ITEM_NUM) LIKE '%CR%'

修改

我的印象是,根据您在评论中所说的内容,您正在寻找一个UPDATE来修改该列的内容以及该函数的结果。如果是这种情况,您需要的是以下查询:

UPDATE ITEM
SET ITEM_NUM = DBO.SHOWWHITESPACE(ITEM_NUM)

这将更新所有行,因此如果您只想更新包含CR的4行,则需要添加WHERE子句,从而将您的查询转换为:

UPDATE ITEM
SET ITEM_NUM = DBO.SHOWWHITESPACE(ITEM_NUM)
WHERE DBO.SHOWWHITESPACE(ITEM_NUM) LIKE '%CR%'